diff --git a/package-lock.json b/package-lock.json index 64d0e088a2..6479c46374 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "binaryen": "101.0.0-nightly.20210904", + "binaryen": "102.0.0-nightly.20211028", "long": "^4.0.0", - "source-map-support": "^0.5.19", + "source-map-support": "^0.5.20", "ts-node": "^6.2.0" }, "bin": { @@ -19,18 +19,17 @@ "asinit": "bin/asinit" }, "devDependencies": { - "@types/node": "^15.6.1", - "@typescript-eslint/eslint-plugin": "^4.9.1", - "@typescript-eslint/parser": "^4.9.1", + "@types/node": "^16.11.4", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", "diff": "^5.0.0", - "eslint": "^7.15.0", - "glob": "^7.1.6", + "eslint": "^7.32.0", + "glob": "^7.2.0", "physical-cpu-count": "^2.0.0", - "source-map-support": "^0.5.19", - "ts-loader": "^9.2.2", + "ts-loader": "^9.2.6", "ts-node": "^6.2.0", - "typescript": "~4.2.4", - "webpack": "^5.59.1", + "typescript": "^4.4.4", + "webpack": "^5.61.0", "webpack-cli": "^4.9.1" }, "funding": { @@ -145,15 +144,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -164,37 +163,33 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.10.0" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -202,21 +197,21 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { @@ -256,25 +251,25 @@ "dev": true }, "node_modules/@types/node": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz", - "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "version": "16.11.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", + "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", - "integrity": "sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.25.0", - "@typescript-eslint/scope-manager": "4.25.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -293,18 +288,27 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.25.0.tgz", - "integrity": "sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -317,16 +321,34 @@ "eslint": "*" } }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.25.0.tgz", - "integrity": "sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -345,13 +367,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz", - "integrity": "sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -362,9 +384,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.25.0.tgz", - "integrity": "sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -375,18 +397,18 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz", - "integrity": "sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -402,12 +424,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz", - "integrity": "sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "4.25.0", + "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" }, "engines": { @@ -625,9 +647,9 @@ } }, "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -668,9 +690,9 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -734,9 +756,9 @@ "dev": true }, "node_modules/binaryen": { - "version": "101.0.0-nightly.20210904", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210904.tgz", - "integrity": "sha512-2AvJhErttuoMvgNcYPPpPy7C12PSvDdtZWtEeX/Otm/Vtf4ePvBpT3UIA00hGAh8HNaGr+dzFNstxTUvjNwZTg==", + "version": "102.0.0-nightly.20211028", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz", + "integrity": "sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w==", "bin": { "wasm-opt": "bin/wasm-opt" } @@ -789,8 +811,7 @@ "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "node_modules/callsites": { "version": "3.1.0", @@ -1033,13 +1054,14 @@ } }, "node_modules/eslint": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.27.0.tgz", - "integrity": "sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1056,7 +1078,7 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -1269,17 +1291,16 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" }, "engines": { "node": ">=8" @@ -1304,9 +1325,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -1399,9 +1420,9 @@ } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -1452,9 +1473,9 @@ } }, "node_modules/globby": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", - "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "dependencies": { "array-union": "^2.1.0", @@ -1787,12 +1808,6 @@ "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -2445,7 +2460,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2454,7 +2468,6 @@ "version": "0.5.20", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2653,9 +2666,9 @@ } }, "node_modules/ts-loader": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.2.tgz", - "integrity": "sha512-hNIhGTQHtNKjOzR2ZtQ2OSVbXPykOae+zostf1IlHCf61Mt41GMJurKNqrYUbzHgpmj6UWRu8eBfb7q0XliV0g==", + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", + "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -2748,9 +2761,9 @@ } }, "node_modules/typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -2789,9 +2802,9 @@ } }, "node_modules/webpack": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", - "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.61.0.tgz", + "integrity": "sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -3092,62 +3105,62 @@ "dev": true }, "@eslint/eslintrc": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", - "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } } }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, @@ -3184,91 +3197,110 @@ "dev": true }, "@types/node": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz", - "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "version": "16.11.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", + "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.25.0.tgz", - "integrity": "sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.25.0", - "@typescript-eslint/scope-manager": "4.25.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + } } }, "@typescript-eslint/experimental-utils": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.25.0.tgz", - "integrity": "sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + } } }, "@typescript-eslint/parser": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.25.0.tgz", - "integrity": "sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.25.0", - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/typescript-estree": "4.25.0", - "debug": "^4.1.1" + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz", - "integrity": "sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" } }, "@typescript-eslint/types": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.25.0.tgz", - "integrity": "sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz", - "integrity": "sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", - "@typescript-eslint/visitor-keys": "4.25.0", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" } }, "@typescript-eslint/visitor-keys": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz", - "integrity": "sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.25.0", + "@typescript-eslint/types": "4.33.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -3460,9 +3492,9 @@ "dev": true }, "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "requires": {} }, @@ -3492,9 +3524,9 @@ "dev": true }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -3540,9 +3572,9 @@ "dev": true }, "binaryen": { - "version": "101.0.0-nightly.20210904", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-101.0.0-nightly.20210904.tgz", - "integrity": "sha512-2AvJhErttuoMvgNcYPPpPy7C12PSvDdtZWtEeX/Otm/Vtf4ePvBpT3UIA00hGAh8HNaGr+dzFNstxTUvjNwZTg==" + "version": "102.0.0-nightly.20211028", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz", + "integrity": "sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w==" }, "brace-expansion": { "version": "1.1.11", @@ -3579,8 +3611,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "callsites": { "version": "3.1.0", @@ -3760,13 +3791,14 @@ "dev": true }, "eslint": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.27.0.tgz", - "integrity": "sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.1", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -3783,7 +3815,7 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -3940,17 +3972,16 @@ "dev": true }, "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" } }, "fast-json-stable-stringify": { @@ -3972,9 +4003,9 @@ "dev": true }, "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -4049,9 +4080,9 @@ "dev": true }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4087,9 +4118,9 @@ } }, "globby": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", - "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -4339,12 +4370,6 @@ "p-locate": "^4.1.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -4806,14 +4831,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { "version": "0.5.20", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -4955,9 +4978,9 @@ } }, "ts-loader": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.2.tgz", - "integrity": "sha512-hNIhGTQHtNKjOzR2ZtQ2OSVbXPykOae+zostf1IlHCf61Mt41GMJurKNqrYUbzHgpmj6UWRu8eBfb7q0XliV0g==", + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", + "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -5021,9 +5044,9 @@ "dev": true }, "typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true }, "uri-js": { @@ -5052,9 +5075,9 @@ } }, "webpack": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", - "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.61.0.tgz", + "integrity": "sha512-fPdTuaYZ/GMGFm4WrPi2KRCqS1vDp773kj9S0iI5Uc//5cszsFEDgHNaX4Rj1vobUiU1dFIV3mA9k1eHeluFpw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", diff --git a/package.json b/package.json index e1116c66ea..112fbd3112 100644 --- a/package.json +++ b/package.json @@ -21,24 +21,23 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "101.0.0-nightly.20210904", + "binaryen": "102.0.0-nightly.20211028", "long": "^4.0.0", - "source-map-support": "^0.5.19", + "source-map-support": "^0.5.20", "ts-node": "^6.2.0" }, "devDependencies": { - "@types/node": "^15.6.1", - "@typescript-eslint/eslint-plugin": "^4.9.1", - "@typescript-eslint/parser": "^4.9.1", + "@types/node": "^16.11.4", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", "diff": "^5.0.0", - "eslint": "^7.15.0", - "glob": "^7.1.6", + "eslint": "^7.32.0", + "glob": "^7.2.0", "physical-cpu-count": "^2.0.0", - "source-map-support": "^0.5.19", - "ts-loader": "^9.2.2", + "ts-loader": "^9.2.6", "ts-node": "^6.2.0", - "typescript": "~4.2.4", - "webpack": "^5.59.1", + "typescript": "^4.4.4", + "webpack": "^5.61.0", "webpack-cli": "^4.9.1" }, "type": "commonjs", diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 5763561632..45adb16939 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -410,6 +410,32 @@ export declare function _BinaryenRefEqSetLeft(expr: ExpressionRef, leftExpr: Exp export declare function _BinaryenRefEqGetRight(expr: ExpressionRef): ExpressionRef; export declare function _BinaryenRefEqSetRight(expr: ExpressionRef, rightExpr: ExpressionRef): void; +export declare function _BinaryenTableGet(module: ModuleRef, name: StringRef, index: ExpressionRef, type: TypeRef): ExpressionRef; +export declare function _BinaryenTableGetGetTable(expr: ExpressionRef): StringRef; +export declare function _BinaryenTableGetSetTable(expr: ExpressionRef, table: StringRef): void; +export declare function _BinaryenTableGetGetIndex(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableGetSetIndex(expr: ExpressionRef, index: ExpressionRef): void; + +export declare function _BinaryenTableSet(module: ModuleRef, name: StringRef, index: ExpressionRef, value: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableSetGetTable(expr: ExpressionRef): StringRef; +export declare function _BinaryenTableSetSetTable(expr: ExpressionRef, table: StringRef): void; +export declare function _BinaryenTableSetGetIndex(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableSetSetIndex(expr: ExpressionRef, index: ExpressionRef): void; +export declare function _BinaryenTableSetGetValue(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableSetSetValue(expr: ExpressionRef, value: ExpressionRef): void; + +export declare function _BinaryenTableSize(module: ModuleRef, name: StringRef): ExpressionRef; +export declare function _BinaryenTableSizeGetTable(expr: ExpressionRef): StringRef; +export declare function _BinaryenTableSizeSetTable(expr: ExpressionRef, table: StringRef): void; + +export declare function _BinaryenTableGrow(module: ModuleRef, name: StringRef, value: ExpressionRef, delta: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableGrowGetTable(expr: ExpressionRef): StringRef; +export declare function _BinaryenTableGrowSetTable(expr: ExpressionRef, table: StringRef): void; +export declare function _BinaryenTableGrowGetValue(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableGrowSetValue(expr: ExpressionRef, value: ExpressionRef): void; +export declare function _BinaryenTableGrowGetDelta(expr: ExpressionRef): ExpressionRef; +export declare function _BinaryenTableGrowSetDelta(expr: ExpressionRef, delta: ExpressionRef): void; + export declare function _BinaryenTry(module: ModuleRef, name: StringRef, bodyExpr: ExpressionRef, catchTags: ArrayRef, numCatchTags: Index, catchBodies: ArrayRef, numCatchBodies: Index, delegateTarget: StringRef): ExpressionRef; export declare function _BinaryenTryGetName(expr: ExpressionRef): StringRef; export declare function _BinaryenTrySetName(expr: ExpressionRef, name: StringRef): void; diff --git a/src/module.ts b/src/module.ts index 4c1c379f9c..f4ab962eb4 100644 --- a/src/module.ts +++ b/src/module.ts @@ -76,7 +76,8 @@ export enum FeatureFlags { GC = 1024 /* _BinaryenFeatureGC */, Memory64 = 2048 /* _BinaryenFeatureMemory64 */, TypedFunctionReferences = 4096 /* _BinaryenFeatureTypedFunctionReferences */, - All = 16383 /* _BinaryenFeatureAll */ + RelaxedSIMD = 16384 /* _BinaryenFeatureRelaxedSIMD */, + All = 32767 /* _BinaryenFeatureAll */ } /** Binaryen expression id constants. */ @@ -126,28 +127,33 @@ export enum ExpressionId { RefIs = 42 /* _BinaryenRefIsId */, RefFunc = 43 /* _BinaryenRefFuncId */, RefEq = 44 /* _BinaryenRefEqId */, - Try = 45 /* _BinaryenTryId */, - Throw = 46 /* _BinaryenThrowId */, - Rethrow = 47 /* _BinaryenRethrowId */, - TupleMake = 48 /* _BinaryenTupleMakeId */, - TupleExtract = 49 /* _BinaryenTupleExtractId */, - I31New = 50 /* _BinaryenI31NewId */, - I31Get = 51 /* _BinaryenI31GetId */, - CallRef = 52 /* _BinaryenCallRefId */, - RefTest = 53 /* _BinaryenRefTestId */, - RefCast = 54 /* _BinaryenRefCastId */, - BrOn = 55 /* _BinaryenBrOnId */, - RttCanon = 56 /* _BinaryenRttCanonId */, - RttSub = 57 /* _BinaryenRttSubId */, - StructNew = 58 /* _BinaryenStructNewId */, - StructGet = 59 /* _BinaryenStructGetId */, - StructSet = 60 /* _BinaryenStructSetId */, - ArrayNew = 61 /* _BinaryenArrayNewId */, - ArrayGet = 62 /* _BinaryenArrayGetId */, - ArraySet = 63 /* _BinaryenArraySetId */, - ArrayLen = 64 /* _BinaryenArrayLenId */, - ArrayCopy = 65 /* _BinaryenArrayCopyId */, - RefAs = 66 /* _BinaryenRefAsId */ + TableGet = 45 /* _BinaryenTableGetId */, + TableSet = 46 /* _BinaryenTableSetId */, + TableSize = 47 /* _BinaryenTableSizeId */, + TableGrow = 48 /* _BinaryenTableGrowId */, + Try = 49 /* _BinaryenTryId */, + Throw = 50 /* _BinaryenThrowId */, + Rethrow = 51 /* _BinaryenRethrowId */, + TupleMake = 52 /* _BinaryenTupleMakeId */, + TupleExtract = 53 /* _BinaryenTupleExtractId */, + I31New = 54 /* _BinaryenI31NewId */, + I31Get = 55 /* _BinaryenI31GetId */, + CallRef = 56 /* _BinaryenCallRefId */, + RefTest = 57 /* _BinaryenRefTestId */, + RefCast = 58 /* _BinaryenRefCastId */, + BrOn = 59 /* _BinaryenBrOnId */, + RttCanon = 60 /* _BinaryenRttCanonId */, + RttSub = 61 /* _BinaryenRttSubId */, + StructNew = 62 /* _BinaryenStructNewId */, + StructGet = 63 /* _BinaryenStructGetId */, + StructSet = 64 /* _BinaryenStructSetId */, + ArrayNew = 65 /* _BinaryenArrayNewId */, + ArrayInit = 66 /* _BinaryenArrayInitId */, + ArrayGet = 67 /* _BinaryenArrayGetId */, + ArraySet = 68 /* _BinaryenArraySetId */, + ArrayLen = 69 /* _BinaryenArrayLenId */, + ArrayCopy = 70 /* _BinaryenArrayCopyId */, + RefAs = 71 /* _BinaryenRefAsId */ } /** Binaryen external kind constants. */ @@ -1239,6 +1245,16 @@ export class Module { return binaryen._BinaryenMemoryGrow(this.ref, delta); } + table_size(name: string): ExpressionRef { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenTableSize(this.ref, cStr); + } + + table_grow(name: string, delta: ExpressionRef, value: ExpressionRef = 0): ExpressionRef { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenTableGrow(this.ref, cStr, value, delta); + } + local_get( index: i32, type: TypeRef @@ -1276,6 +1292,15 @@ export class Module { return binaryen._BinaryenGlobalGet(this.ref, cStr, type); } + table_get( + name: string, + index: ExpressionRef, + type: TypeRef + ): ExpressionRef { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenTableGet(this.ref, cStr, index, type); + } + load( bytes: Index, signed: bool, @@ -1380,6 +1405,15 @@ export class Module { return binaryen._BinaryenGlobalSet(this.ref, cStr, value); } + table_set( + name: string, + index: ExpressionRef, + value: ExpressionRef + ): ExpressionRef { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenTableSet(this.ref, cStr, index, value); + } + block( label: string | null, children: ExpressionRef[], @@ -2267,6 +2301,7 @@ export class Module { passes.push("local-cse"); passes.push("remove-unused-brs"); passes.push("remove-unused-names"); + passes.push("merge-blocks"); passes.push("precompute-propagate"); } if (optimizeLevel >= 3) { @@ -2274,6 +2309,7 @@ export class Module { passes.push("flatten"); passes.push("vacuum"); passes.push("simplify-locals-notee-nostructure"); + passes.push("vacuum"); passes.push("licm"); passes.push("merge-locals"); passes.push("reorder-locals"); @@ -2295,6 +2331,7 @@ export class Module { if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("pick-load-signs"); passes.push("simplify-globals-optimizing"); + passes.push("simplify-globals-optimizing"); } passes.push("simplify-locals-notee-nostructure"); passes.push("vacuum"); @@ -2307,25 +2344,24 @@ export class Module { passes.push("coalesce-locals"); passes.push("reorder-locals"); passes.push("vacuum"); - + if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("rse"); + passes.push("vacuum"); + } if (optimizeLevel >= 3 || shrinkLevel >= 1) { passes.push("merge-locals"); + passes.push("vacuum"); } - passes.push("vacuum"); if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("simplify-globals-optimizing"); + passes.push("simplify-globals-optimizing"); } - passes.push("merge-blocks"); passes.push("remove-unused-brs"); passes.push("remove-unused-names"); passes.push("merge-blocks"); if (optimizeLevel >= 3) { passes.push("optimize-instructions"); } - if (optimizeLevel >= 2 || shrinkLevel >= 1) { - passes.push("rse"); - passes.push("vacuum"); - } // --- PassRunner::addDefaultGlobalOptimizationPostPasses --- @@ -2353,8 +2389,10 @@ export class Module { if (optimizeLevel >= 3 || shrinkLevel >= 1) { passes.push("code-folding"); } - if (optimizeLevel > 1 && (this.getFeatures() & FeatureFlags.GC) != 0) { + if (optimizeLevel >= 2 && (this.getFeatures() & FeatureFlags.GC) != 0) { passes.push("heap2local"); + passes.push("merge-locals"); + passes.push("local-subtyping"); } // precompute works best after global optimizations if (optimizeLevel >= 2 || shrinkLevel >= 1) { @@ -2367,6 +2405,7 @@ export class Module { passes.push("dae-optimizing"); // reduce arity passes.push("inlining-optimizing"); // and inline if possible if (optimizeLevel >= 2 || shrinkLevel >= 1) { + passes.push("ssa-nomerge"); passes.push("rse"); // move code on early return (after CFG cleanup) passes.push("code-pushing"); @@ -2390,8 +2429,10 @@ export class Module { passes.push("inlining"); passes.push("precompute-propagate"); + passes.push("rse"); passes.push("vacuum"); - + passes.push("ssa-nomerge"); + passes.push("simplify-locals"); passes.push("coalesce-locals"); } passes.push("remove-unused-brs"); @@ -2963,12 +3004,14 @@ export enum SideEffects { WritesGlobal = 32 /* _BinaryenSideEffectWritesGlobal */, ReadsMemory = 64 /* _BinaryenSideEffectReadsMemory */, WritesMemory = 128 /* _BinaryenSideEffectWritesMemory */, - ImplicitTrap = 256 /* _BinaryenSideEffectImplicitTrap */, - IsAtomic = 512 /* _BinaryenSideEffectIsAtomic */, - Throws = 1024 /* _BinaryenSideEffectThrows */, - DanglingPop = 2048 /* _BinaryenSideEffectDanglingPop */, - TrapsNeverHappen = 4096 /* _BinaryenSideEffectTrapsNeverHappen */, - Any = 8191 /* _BinaryenSideEffectAny */ + ReadsTable = 256 /* _BinaryenSideEffectReadsTable */, + WritesTable = 512 /* _BinaryenSideEffectWritesTable */, + ImplicitTrap = 1024 /* _BinaryenSideEffectImplicitTrap */, + IsAtomic = 2048 /* _BinaryenSideEffectIsAtomic */, + Throws = 4096 /* _BinaryenSideEffectThrows */, + DanglingPop = 8192 /* _BinaryenSideEffectDanglingPop */, + TrapsNeverHappen = 16384 /* _BinaryenSideEffectTrapsNeverHappen */, + Any = 32767 /* _BinaryenSideEffectAny */ } export function getSideEffects(expr: ExpressionRef, module: ModuleRef): SideEffects { diff --git a/std/assembly/util/string.ts b/std/assembly/util/string.ts index 325359d237..0bea1ec612 100644 --- a/std/assembly/util/string.ts +++ b/std/assembly/util/string.ts @@ -512,8 +512,7 @@ export function isSpace(c: u32): bool { if (c < 0x1680) { // < (1) // , , , , , and // (c == 0x20 || c == 0xA0) was optimized to (c | 0x80) == 0xA0 - // @ts-ignore: cast - return ((c | 0x80) == 0xA0) | (c - 0x09 <= 0x0D - 0x09); + return ((c | 0x80) == 0xA0) || (c - 0x09 <= 0x0D - 0x09); } if (c - 0x2000 <= 0x200A - 0x2000) return true; switch (c) { diff --git a/std/assembly/util/uri.ts b/std/assembly/util/uri.ts index c8d72bca24..630f79be5f 100644 --- a/std/assembly/util/uri.ts +++ b/std/assembly/util/uri.ts @@ -271,6 +271,5 @@ function loadHex(src: usize, offset: usize): u32 { // @ts-ignore: decorator @inline function isHex(ch: u32): bool { - // @ts-ignore - return (ch - CharCode._0 < 10) | ((ch | 32) - CharCode.a < 6); + return (ch - CharCode._0 < 10) || ((ch | 32) - CharCode.a < 6); } diff --git a/tests/compiler/NonNullable.optimized.wat b/tests/compiler/NonNullable.optimized.wat index 74e9f4ab52..ef40f5ead3 100644 --- a/tests/compiler/NonNullable.optimized.wat +++ b/tests/compiler/NonNullable.optimized.wat @@ -45,7 +45,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -59,32 +59,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -101,29 +100,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 7974350127..2a632a59f7 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -146,11 +146,11 @@ ) (func $export:assert-nonnull/testProp (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1404 i32.lt_s @@ -206,11 +206,11 @@ ) (func $export:assert-nonnull/testArr (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1404 i32.lt_s @@ -306,11 +306,11 @@ ) (func $export:assert-nonnull/testElem (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1404 i32.lt_s @@ -366,21 +366,9 @@ ) (func $export:assert-nonnull/testAll (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1404 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -389,9 +377,21 @@ br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - block $__inlined_func$assert-nonnull/testAll + local.get $0 + i32.store + block $__inlined_func$assert-nonnull/testAll (result i32) + local.get $1 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store block $folding-inner0 local.get $0 i32.eqz @@ -419,6 +419,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 br $__inlined_func$assert-nonnull/testAll end i32.const 1056 @@ -432,7 +433,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 17808 @@ -444,21 +444,9 @@ ) (func $export:assert-nonnull/testAll2 (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 1404 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -467,9 +455,21 @@ br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - block $__inlined_func$assert-nonnull/testAll2 + local.get $0 + i32.store + block $__inlined_func$assert-nonnull/testAll2 (result i32) + local.get $1 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store block $folding-inner0 local.get $0 i32.eqz @@ -497,6 +497,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 br $__inlined_func$assert-nonnull/testAll2 end i32.const 1056 @@ -510,7 +511,6 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 17808 @@ -549,11 +549,11 @@ ) (func $export:assert-nonnull/testFn2 (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1404 i32.lt_s @@ -609,11 +609,11 @@ ) (func $export:assert-nonnull/testRet (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1404 i32.lt_s @@ -698,11 +698,11 @@ ) (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1404 i32.lt_s diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index 5689d17f10..36ab116b87 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -166,13 +166,9 @@ global.set $binary/i i32.const 0 global.set $binary/i - global.get $binary/i i32.const 1 - i32.add global.set $binary/i - global.get $binary/i - i32.const 1 - i32.sub + i32.const 0 global.set $binary/i i32.const 0 global.set $binary/i @@ -212,13 +208,9 @@ global.set $binary/I i64.const 0 global.set $binary/I - global.get $binary/I i64.const 1 - i64.add global.set $binary/I - global.get $binary/I - i64.const 1 - i64.sub + i64.const 0 global.set $binary/I i64.const 0 global.set $binary/I diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 3e37054af4..870dd0f462 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -101,7 +101,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -115,32 +115,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -157,29 +156,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 2d3cd0117c..f57498eeea 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17980 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1095,56 +939,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1245,12 +1086,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1266,14 +1107,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1284,18 +1125,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1306,54 +1146,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1361,16 +1197,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1378,15 +1214,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1414,12 +1250,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1433,7 +1269,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1443,7 +1279,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1461,12 +1297,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1496,8 +1332,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1526,19 +1362,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1547,18 +1383,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1567,10 +1403,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1579,97 +1415,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1701,7 +1537,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1733,7 +1569,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1799,11 +1635,11 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -1815,7 +1651,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -1837,7 +1673,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1596 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1935,443 +1771,590 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 5 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - 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 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 38 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - 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 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $1 + i32.const 1056 + i32.const 38 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $0 + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if i32.const 0 - i32.store - local.get $0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.const 8 - i32.const 7 call $~lib/rt/itcms/__new local.tee $0 i32.store - global.get $~lib/memory/__stack_pointer - 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 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.const 1056 + i32.const 56 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 - i32.const 2 - i32.store offset=4 + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + 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 1596 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne + end + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18000 + i32.const 18048 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 66 - i32.const 3 + i32.const 1168 + i32.const 147 + i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - 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 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 9 - call $~lib/rt/itcms/__new + i32.load offset=4 + i32.const -4 + i32.and local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 i32.eqz if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store + i32.const 0 + local.get $1 + i32.const 17980 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load - i32.const 1 - i32.ne + i32.load offset=8 + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 84 - i32.const 3 + i32.const 1168 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - 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 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - 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 1596 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.store + i32.const 3 + i32.and local.get $0 - i32.const 2 + i32.or i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.load + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + else + i32.const 1488 + i32.load local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne + i32.lt_u if - i32.const 0 - i32.const 1056 - i32.const 105 - i32.const 3 + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 i32.add - global.set $~lib/memory/__stack_pointer - return + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) ) diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index b993737908..9fda589c77 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -52,18 +52,18 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-implements/c local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -102,160 +102,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17948 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1504 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -292,11 +138,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -308,28 +153,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -341,19 +183,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -378,9 +220,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -388,17 +230,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -526,7 +368,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -537,7 +379,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -557,44 +399,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -604,7 +445,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -614,20 +455,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -655,7 +496,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -682,15 +523,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -702,15 +540,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -731,6 +569,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -740,7 +581,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -777,8 +618,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -937,7 +778,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1062,7 +907,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1072,7 +917,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1085,14 +930,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1122,9 +966,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1140,13 +984,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1156,9 +1000,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1228,17 +1072,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1251,16 +1095,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1268,15 +1112,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1303,12 +1147,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1318,7 +1162,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1327,19 +1171,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1369,8 +1213,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1424,7 +1268,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1542,12 +1386,11 @@ ) (func $class-implements/C#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1564 i32.lt_s @@ -1712,4 +1555,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17948 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1504 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/class-overloading-cast.optimized.wat b/tests/compiler/class-overloading-cast.optimized.wat index 072354d642..7c0f2cfb87 100644 --- a/tests/compiler/class-overloading-cast.optimized.wat +++ b/tests/compiler/class-overloading-cast.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -54,30 +54,30 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading-cast/v2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading-cast/v3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading-cast/c local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -116,160 +116,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18084 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1616 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1620 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -306,11 +152,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -322,28 +167,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -355,19 +197,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -392,9 +234,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -402,17 +244,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -540,7 +382,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -551,7 +393,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -571,44 +413,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -618,7 +459,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -628,20 +469,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -669,7 +510,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -696,15 +537,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -716,15 +554,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -745,6 +583,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -754,7 +595,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -791,8 +632,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -951,7 +792,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1076,7 +921,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1086,7 +931,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1099,14 +944,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1136,9 +980,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1154,13 +998,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1170,9 +1014,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1242,17 +1086,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1265,16 +1109,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1282,15 +1126,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1317,12 +1161,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1332,7 +1176,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1341,19 +1185,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1383,8 +1227,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1440,7 +1284,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1454,32 +1298,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1496,29 +1339,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1557,7 +1400,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1589,11 +1432,12 @@ (func $start:class-overloading-cast (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $2 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1700 i32.lt_s @@ -1819,15 +1663,17 @@ local.tee $1 i32.store offset=8 local.get $0 - i32.const 1488 - i32.const 1456 local.get $1 i32.const 8 i32.sub i32.load i32.const 6 i32.eq - select + if (result i32) + i32.const 1488 + else + i32.const 1456 + end local.tee $1 i32.store local.get $0 @@ -1897,13 +1743,14 @@ global.set $class-overloading-cast/c global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $class-overloading-cast/c local.tee $1 + global.get $class-overloading-cast/c + local.tee $2 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1600 i32.store offset=12 - local.get $1 + local.get $2 i32.const 8 i32.sub i32.load @@ -1928,13 +1775,14 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $class-overloading-cast/c local.tee $1 + global.get $class-overloading-cast/c + local.tee $2 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1600 i32.store offset=12 - local.get $1 + local.get $2 i32.const 8 i32.sub i32.load @@ -2004,4 +1852,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18084 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1616 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1620 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 5f2453d86b..85fa21eab4 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -66,42 +66,42 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/a local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/c local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/ia local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/ic local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $class-overloading/b2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -140,160 +140,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18316 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1792 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1796 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -330,11 +176,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -346,28 +191,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -379,19 +221,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -416,9 +258,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -426,17 +268,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -564,7 +406,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -575,7 +417,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -595,44 +437,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -642,7 +483,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -652,20 +493,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -693,7 +534,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -720,15 +561,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -740,15 +578,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -769,6 +607,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -778,7 +619,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -815,8 +656,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -975,7 +816,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1100,7 +945,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1110,7 +955,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1123,14 +968,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1160,9 +1004,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1178,13 +1022,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1194,9 +1038,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1266,17 +1110,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1289,16 +1133,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1306,15 +1150,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1341,12 +1185,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1356,7 +1200,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1365,19 +1209,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1407,8 +1251,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1464,7 +1308,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1478,32 +1322,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1520,29 +1363,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1615,7 +1458,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1709,11 +1552,11 @@ (func $start:class-overloading (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1932 i32.lt_s @@ -2108,30 +1951,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual21 - block $default22 - block $case223 - block $case124 - block $case025 + block $__inlined_func$class-overloading/A#b@virtual22 + block $default23 + block $case224 + block $case125 + block $case026 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case025 $case124 $case025 $case025 $case223 $default22 + br_table $case026 $case125 $case026 $case026 $case224 $default23 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual21 + br $__inlined_func$class-overloading/A#b@virtual22 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual21 + br $__inlined_func$class-overloading/A#b@virtual22 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual21 + br $__inlined_func$class-overloading/A#b@virtual22 end i32.const 1488 global.set $class-overloading/which @@ -2162,30 +2005,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual30 - block $default31 - block $case232 - block $case133 - block $case034 + block $__inlined_func$class-overloading/A#get:c@virtual31 + block $default32 + block $case233 + block $case134 + block $case035 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case034 $case133 $case034 $case034 $case232 $default31 + br_table $case035 $case134 $case035 $case035 $case233 $default32 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual31 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual31 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual30 + br $__inlined_func$class-overloading/A#get:c@virtual31 end i32.const 1488 global.set $class-overloading/which @@ -2214,30 +2057,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual39 - block $default40 - block $case241 - block $case142 - block $case043 + block $__inlined_func$class-overloading/A#b@virtual40 + block $default41 + block $case242 + block $case143 + block $case044 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case043 $case142 $case043 $case043 $case241 $default40 + br_table $case044 $case143 $case044 $case044 $case242 $default41 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual39 + br $__inlined_func$class-overloading/A#b@virtual40 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual39 + br $__inlined_func$class-overloading/A#b@virtual40 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual39 + br $__inlined_func$class-overloading/A#b@virtual40 end i32.const 1488 global.set $class-overloading/which @@ -2298,30 +2141,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual48 - block $default49 - block $case250 - block $case151 - block $case052 + block $__inlined_func$class-overloading/A#b@virtual49 + block $default50 + block $case251 + block $case152 + block $case053 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case052 $case151 $case052 $case052 $case250 $default49 + br_table $case053 $case152 $case053 $case053 $case251 $default50 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual48 + br $__inlined_func$class-overloading/A#b@virtual49 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual48 + br $__inlined_func$class-overloading/A#b@virtual49 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual48 + br $__inlined_func$class-overloading/A#b@virtual49 end i32.const 1488 global.set $class-overloading/which @@ -2352,30 +2195,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual57 - block $default58 - block $case259 - block $case160 - block $case061 + block $__inlined_func$class-overloading/A#get:c@virtual58 + block $default59 + block $case260 + block $case161 + block $case062 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case061 $case160 $case061 $case061 $case259 $default58 + br_table $case062 $case161 $case062 $case062 $case260 $default59 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual57 + br $__inlined_func$class-overloading/A#get:c@virtual58 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual57 + br $__inlined_func$class-overloading/A#get:c@virtual58 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual57 + br $__inlined_func$class-overloading/A#get:c@virtual58 end i32.const 1488 global.set $class-overloading/which @@ -2404,30 +2247,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual66 - block $default67 - block $case268 - block $case169 - block $case070 + block $__inlined_func$class-overloading/A#b@virtual67 + block $default68 + block $case269 + block $case170 + block $case071 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case070 $case169 $case070 $case070 $case268 $default67 + br_table $case071 $case170 $case071 $case071 $case269 $default68 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual66 + br $__inlined_func$class-overloading/A#b@virtual67 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual66 + br $__inlined_func$class-overloading/A#b@virtual67 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual66 + br $__inlined_func$class-overloading/A#b@virtual67 end i32.const 1488 global.set $class-overloading/which @@ -2513,30 +2356,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual75 - block $default76 - block $case277 - block $case178 - block $case079 + block $__inlined_func$class-overloading/A#b@virtual77 + block $default78 + block $case279 + block $case180 + block $case081 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case079 $case178 $case079 $case079 $case277 $default76 + br_table $case081 $case180 $case081 $case081 $case279 $default78 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 + br $__inlined_func$class-overloading/A#b@virtual77 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 + br $__inlined_func$class-overloading/A#b@virtual77 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual75 + br $__inlined_func$class-overloading/A#b@virtual77 end i32.const 1488 global.set $class-overloading/which @@ -2567,30 +2410,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#get:c@virtual84 - block $default85 - block $case286 - block $case187 - block $case088 + block $__inlined_func$class-overloading/A#get:c@virtual86 + block $default87 + block $case288 + block $case189 + block $case090 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case088 $case187 $case088 $case088 $case286 $default85 + br_table $case090 $case189 $case090 $case090 $case288 $default87 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual84 + br $__inlined_func$class-overloading/A#get:c@virtual86 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual84 + br $__inlined_func$class-overloading/A#get:c@virtual86 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#get:c@virtual84 + br $__inlined_func$class-overloading/A#get:c@virtual86 end i32.const 1488 global.set $class-overloading/which @@ -2621,30 +2464,30 @@ global.get $class-overloading/a local.tee $0 i32.store - block $__inlined_func$class-overloading/A#b@virtual93 - block $default94 - block $case295 - block $case196 - block $case097 + block $__inlined_func$class-overloading/A#b@virtual95 + block $default96 + block $case297 + block $case198 + block $case099 local.get $0 i32.const 8 i32.sub i32.load i32.const 4 i32.sub - br_table $case097 $case196 $case097 $case097 $case295 $default94 + br_table $case099 $case198 $case099 $case099 $case297 $default96 end i32.const 1520 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual93 + br $__inlined_func$class-overloading/A#b@virtual95 end i32.const 1616 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual93 + br $__inlined_func$class-overloading/A#b@virtual95 end i32.const 1648 global.set $class-overloading/which - br $__inlined_func$class-overloading/A#b@virtual93 + br $__inlined_func$class-overloading/A#b@virtual95 end i32.const 1488 global.set $class-overloading/which @@ -2699,8 +2542,8 @@ local.tee $0 i32.store block $__inlined_func$class-overloading/IA#foo@virtual - block $default102 - block $case1103 + block $default105 + block $case1106 local.get $0 i32.const 8 i32.sub @@ -2712,8 +2555,8 @@ local.get $0 i32.const 12 i32.eq - br_if $case1103 - br $default102 + br_if $case1106 + br $default105 end i32.const 1680 global.set $class-overloading/which @@ -2774,9 +2617,9 @@ global.get $class-overloading/ic local.tee $0 i32.store - block $__inlined_func$class-overloading/IA#foo@virtual105 - block $default106 - block $case1107 + block $__inlined_func$class-overloading/IA#foo@virtual109 + block $default110 + block $case1111 local.get $0 i32.const 8 i32.sub @@ -2788,16 +2631,16 @@ local.get $0 i32.const 12 i32.eq - br_if $case1107 - br $default106 + br_if $case1111 + br $default110 end i32.const 1680 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual105 + br $__inlined_func$class-overloading/IA#foo@virtual109 end i32.const 1712 global.set $class-overloading/which - br $__inlined_func$class-overloading/IA#foo@virtual105 + br $__inlined_func$class-overloading/IA#foo@virtual109 end unreachable end @@ -2875,7 +2718,7 @@ global.get $class-overloading/b2 local.tee $0 i32.store - block $__inlined_func$class-overloading/A2#foo@virtual + block $__inlined_func$class-overloading/A2#foo@virtual (result i32) local.get $0 i32.const 8 i32.sub @@ -2964,6 +2807,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 3 br $__inlined_func$class-overloading/A2#foo@virtual end i32.const 1744 @@ -2973,6 +2817,16 @@ call $~lib/builtins/abort unreachable end + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -2988,12 +2842,11 @@ ) (func $class-overloading/B#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1932 i32.lt_s @@ -3130,4 +2983,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18316 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1792 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 13f507fb7a..36d5739d46 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -45,11 +45,11 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -116,7 +116,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -139,7 +139,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -149,15 +149,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -222,30 +222,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -282,11 +258,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -298,28 +273,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -331,19 +303,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -368,9 +340,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -378,17 +350,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -516,7 +488,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +499,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +519,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -594,7 +565,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +575,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -645,7 +616,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -672,15 +643,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -692,15 +660,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -721,6 +689,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +701,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +738,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -927,7 +898,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1052,7 +1027,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1062,7 +1037,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1075,14 +1050,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1107,56 +1081,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1304,14 +1275,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1321,17 +1292,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1347,22 +1318,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1373,11 +1344,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1472,10 +1443,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1483,7 +1450,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1494,54 +1464,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1549,16 +1515,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1567,7 +1533,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1575,9 +1541,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1588,11 +1554,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1603,12 +1569,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1621,89 +1587,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1711,7 +1677,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1719,186 +1685,212 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $class/testGenericInitializer (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1588 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store - 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 1588 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 32 - call $~lib/memory/memory.fill - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 32 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + 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 1588 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 32 + call $~lib/memory/memory.fill + local.get $1 + local.get $2 + i32.store + local.get $2 + if + local.get $1 + i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + local.get $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $4 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.const 32 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.store + local.get $1 + if + local.get $3 + i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $3 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18000 + i32.const 18048 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 18000 - i32.const 18048 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 call $~lib/builtins/abort unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid - block $~lib/array/Array - block $class/Animal - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $~lib/array/Array $invalid - end - return + block $class/Animal + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $folding-inner0 $invalid end return end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end unreachable @@ -1908,7 +1900,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -1990,4 +1982,23 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index eb2ba60aac..e503951a8d 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -53,72 +53,72 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/emptyCtorWithFieldInit local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/emptyCtorWithFieldNoInit local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/emptyCtorWithFieldAccess local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/none local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/justFieldInit local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/justFieldNoInit local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/ctorReturns local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/ctorConditionallyReturns local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/ctorConditionallyReturnsThis local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $constructor/ctorFieldInitOrder local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -157,160 +157,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17988 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -347,11 +193,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -363,28 +208,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -396,19 +238,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -433,9 +275,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -443,17 +285,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -581,7 +423,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -592,7 +434,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -612,44 +454,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -659,7 +500,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -669,20 +510,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -710,7 +551,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -737,15 +578,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -757,15 +595,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -786,6 +624,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -795,7 +636,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -832,8 +673,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -992,7 +833,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1117,7 +962,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1127,7 +972,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1140,14 +985,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1172,56 +1016,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1322,12 +1163,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1343,14 +1184,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1361,18 +1202,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1383,54 +1223,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1438,16 +1274,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1455,15 +1291,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1491,12 +1327,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1510,7 +1346,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1520,7 +1356,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1538,12 +1374,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1573,8 +1409,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1603,19 +1439,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1624,18 +1460,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1644,10 +1480,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1656,97 +1492,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1778,47 +1614,47 @@ end end end - local.get $3 + local.get $2 ) (func $start:constructor (local $0 i32) - memory.size - i32.const 16 - i32.shl - i32.const 17988 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + memory.size + i32.const 16 + i32.shl + i32.const 17988 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + 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 1604 i32.lt_s @@ -2199,7 +2035,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2230,4 +2066,153 @@ (func $~start call $start:constructor ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17988 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index ddba997211..3a6eb21a03 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17892 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1472 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1100,9 +944,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1118,13 +962,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1134,9 +978,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1154,314 +998,313 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - i32.const 10 - local.set $0 - loop $do-loop|0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-loop|0 - end - local.get $0 - if - i32.const 0 - i32.const 1056 + block $folding-inner0 i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $do-loop|00 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub local.set $0 + loop $do-loop|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-loop|0 + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - br_if $do-loop|00 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 10 - local.set $0 - loop $do-loop|01 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $do-loop|00 + local.get $0 + local.tee $1 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + br_if $do-loop|00 + end local.get $0 - i32.const 1 - i32.sub + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + i32.const 10 local.set $0 - local.get $3 - i32.const 1 - i32.add - local.set $3 - loop $do-loop|1 + loop $do-loop|01 + local.get $0 + i32.const 1 + i32.sub + local.set $0 local.get $2 i32.const 1 i32.add local.set $2 + loop $do-loop|1 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-loop|1 + end local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $do-loop|1 + if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 40 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + br_if $do-loop|01 end local.get $0 if i32.const 0 i32.const 1056 - i32.const 39 - i32.const 5 + i32.const 42 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 9 i32.ne if i32.const 0 i32.const 1056 - i32.const 40 - i32.const 5 + i32.const 44 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - br_if $do-loop|01 - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $do-loop|02 + local.set $0 + loop $do-loop|02 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $do-loop|02 + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne - br_if $do-loop|02 - end - local.get $0 - i32.const 10 - i32.ne - if + if + i32.const 0 + i32.const 1056 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $do-loop|03 + local.set $0 + loop $do-loop|03 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $do-loop|03 + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne - br_if $do-loop|03 - end - local.get $0 - i32.const 10 - i32.ne - if + if + i32.const 0 + i32.const 1056 + i32.const 70 + i32.const 1 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 70 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $do-loop|04 + local.set $0 + loop $do-loop|04 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + i32.const 0 + local.get $0 + select + br_if $do-loop|04 + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - local.get $0 - select - br_if $do-loop|04 - end - local.get $0 - i32.const 10 - i32.ne - if + local.set $0 i32.const 0 - i32.const 1056 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - i32.const 0 - local.set $2 - loop $do-loop|06 + local.set $1 + loop $do-loop|05 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + if + loop $do-loop|17 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.rem_s + i32.const 0 + local.get $1 + select + br_if $do-loop|17 + end + local.get $0 + br_if $do-loop|05 + end + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne if - loop $do-loop|18 - local.get $2 - i32.const 1 - i32.add - local.tee $2 - i32.const 10 - i32.rem_s - i32.const 0 - local.get $2 - select - br_if $do-loop|18 - end - local.get $0 - br_if $do-loop|06 + i32.const 0 + i32.const 1056 + i32.const 134 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 134 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 90 - i32.ne - if + local.get $1 + i32.const 90 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17892 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace i32.const 0 - i32.const 1056 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 17892 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + local.set $1 + 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 1508 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $do/Ref#constructor i32.store - loop $do-loop|09 - local.get $2 + loop $do-loop|06 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if @@ -1474,9 +1317,9 @@ i32.store end local.get $0 - br_if $do-loop|09 + br_if $do-loop|06 end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1511,15 +1354,15 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $do/Ref#constructor - local.tee $0 + local.tee $1 i32.store - loop $do-loop|07 - block $do-break|08 + loop $do-loop|08 + block $do-break|09 local.get $2 i32.const 1 i32.add @@ -1528,11 +1371,11 @@ i32.eq if i32.const 0 - local.set $0 - br $do-break|08 + local.set $1 + br $do-break|09 end call $do/Ref#constructor - br_if $do-loop|07 + br_if $do-loop|08 end end local.get $2 @@ -1546,7 +1389,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1056 @@ -1622,7 +1465,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1655,7 +1498,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1709,17 +1552,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1732,16 +1575,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1749,15 +1592,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1784,22 +1627,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1808,19 +1651,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1832,8 +1675,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1846,12 +1689,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1865,7 +1708,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1877,16 +1720,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17892 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1472 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) ) diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index 6cffd17c15..36f878bfc5 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -46,13 +46,13 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1520 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -168,10 +168,10 @@ local.get $0 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $2 + local.set $1 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.const 1 i32.le_u if (result i32) @@ -179,7 +179,7 @@ else i32.const 1568 i32.load - local.get $1 + local.get $2 i32.lt_u if i32.const 1248 @@ -189,7 +189,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 i32.shl i32.const 1572 @@ -205,53 +205,29 @@ i32.const 2 end local.set $3 - local.get $2 + local.get $1 i32.load offset=8 - local.set $1 + local.set $2 local.get $0 - local.get $2 + local.get $1 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -288,11 +264,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -304,28 +279,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -337,19 +309,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -374,9 +346,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -384,17 +356,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -522,7 +494,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +505,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +525,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -600,7 +571,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +581,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -651,7 +622,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -678,15 +649,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -698,15 +666,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -727,6 +695,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +707,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +744,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -933,7 +904,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1058,7 +1033,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1068,7 +1043,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1081,14 +1056,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1113,56 +1087,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1263,12 +1234,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1284,14 +1255,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1302,18 +1273,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1324,54 +1294,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1379,16 +1345,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1396,15 +1362,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1432,12 +1398,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1451,7 +1417,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1461,7 +1427,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1479,12 +1445,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1514,8 +1480,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1544,19 +1510,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1565,18 +1531,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1585,10 +1551,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1597,97 +1563,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1719,7 +1685,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) @@ -1783,7 +1749,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and @@ -1801,33 +1767,33 @@ i32.const 1 i32.eq if - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#makeGray else - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $1 + local.set $2 + local.get $1 local.get $0 global.get $~lib/rt/itcms/white - local.get $2 i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 - local.get $2 local.get $0 + local.get $1 i32.store offset=8 end ) @@ -1886,7 +1852,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1926,4 +1892,23 @@ i32.const 1344 global.set $~lib/rt/itcms/fromSpace ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.optimized.wat index cf783e1948..25c28ebc6f 100644 --- a/tests/compiler/empty-new.optimized.wat +++ b/tests/compiler/empty-new.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -35,9 +35,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -76,160 +76,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17852 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -266,11 +112,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -282,28 +127,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -315,19 +157,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -352,9 +194,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -362,17 +204,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -500,7 +342,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -511,7 +353,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -531,44 +373,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -578,7 +419,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -588,20 +429,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -629,7 +470,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -656,15 +497,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -676,15 +514,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -705,6 +543,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -714,7 +555,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -751,8 +592,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -911,7 +752,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1036,7 +881,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1046,7 +891,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1059,14 +904,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1096,9 +940,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1114,13 +958,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1130,9 +974,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1166,7 +1010,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1266,11 +1110,11 @@ i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 local.get $2 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1283,16 +1127,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $1 local.get $0 local.get $1 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -1301,7 +1145,7 @@ end end local.get $2 - local.get $1 + local.get $0 i32.const 16 i32.shl memory.size @@ -1340,17 +1184,17 @@ call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $3 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $1 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1359,19 +1203,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $3 + local.get $1 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $2 - local.get $1 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $3 i32.const -2 i32.and i32.store @@ -1399,17 +1243,17 @@ global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $2 i32.store offset=8 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and @@ -1429,4 +1273,153 @@ i32.add global.set $~lib/rt/itcms/total ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17852 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index aeb72df942..3c66d1990d 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -89,9 +89,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -130,160 +130,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17868 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -320,11 +166,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -336,28 +181,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -369,19 +211,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -406,9 +248,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -416,17 +258,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -554,7 +396,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -565,7 +407,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -585,44 +427,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -632,7 +473,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -642,20 +483,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -683,7 +524,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -710,15 +551,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -730,15 +568,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -759,6 +597,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -768,7 +609,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -805,8 +646,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -965,7 +806,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1090,7 +935,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1100,7 +945,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1113,14 +958,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1150,9 +994,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1168,13 +1012,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1184,9 +1028,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1256,17 +1100,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1279,16 +1123,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1296,15 +1140,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1331,12 +1175,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1346,7 +1190,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1355,19 +1199,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1397,8 +1241,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1427,34 +1271,34 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 ) (func $export/mul (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -1501,7 +1345,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1607,11 +1451,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1484 i32.lt_s @@ -1701,11 +1545,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1484 i32.lt_s @@ -1768,4 +1612,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17868 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index c5d90544eb..50c1473a52 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -72,26 +72,26 @@ (local $0 i32) (local $1 i32) i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $rereexport/car local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rereexport/exportsNamespaceCar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $reexport/car local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -131,160 +131,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17956 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1536 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -321,11 +167,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -337,28 +182,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -370,19 +212,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -407,9 +249,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -417,17 +259,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -555,7 +397,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -566,7 +408,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -586,44 +428,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -633,7 +474,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -643,20 +484,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -684,7 +525,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -711,15 +552,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -731,15 +569,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -760,6 +598,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -769,7 +610,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -806,8 +647,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -966,7 +807,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1091,7 +936,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1101,7 +946,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1114,14 +959,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1151,9 +995,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1169,13 +1013,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1185,9 +1029,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1230,7 +1074,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1240,134 +1084,132 @@ ) (func $~start (local $0 i32) - block $__inlined_func$start:exportstar-rereexport + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17956 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17956 - i32.sub + i32.const 1504 + i32.const 18 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $exports/Car#constructor - global.set $rereexport/car - global.get $~lib/memory/__stack_pointer - global.get $rereexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $~lib/memory/__stack_pointer - global.get $rereexport/exportsNamespaceCar - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:exportstar-rereexport + call $~lib/builtins/abort + unreachable end - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $exports/Car#constructor (result i32) (local $0 i32) @@ -1391,7 +1233,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1445,17 +1287,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1468,16 +1310,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1485,15 +1327,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1520,22 +1362,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1544,19 +1386,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1568,8 +1410,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1582,12 +1424,12 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1601,7 +1443,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1616,46 +1458,195 @@ local.get $0 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $4 local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17956 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1536 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) ) diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 33fe5c45e3..820757f700 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -47,15 +47,15 @@ (local $0 i32) (local $1 i32) i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1408 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1616 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1216 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -122,7 +122,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -145,7 +145,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -155,15 +155,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -228,30 +228,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -288,11 +264,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -304,28 +279,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -337,19 +309,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -374,9 +346,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -384,17 +356,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -522,7 +494,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +505,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +525,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -600,7 +571,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +581,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -651,7 +622,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -678,15 +649,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -698,15 +666,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -727,6 +695,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +707,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +744,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -933,7 +904,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1058,7 +1033,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1068,7 +1043,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1081,14 +1056,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1113,56 +1087,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1310,14 +1281,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1327,17 +1298,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1353,22 +1324,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1379,11 +1350,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1478,10 +1449,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1489,7 +1456,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1500,54 +1470,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1555,16 +1521,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1573,7 +1539,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1581,9 +1547,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1594,11 +1560,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1609,12 +1575,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1627,89 +1593,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1717,7 +1683,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1725,66 +1691,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1798,17 +1704,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1954,19 +1860,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1981,7 +1887,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1992,10 +1898,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2003,10 +1909,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2017,7 +1923,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2047,17 +1953,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2072,7 +1978,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2083,10 +1989,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2094,10 +2000,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2108,7 +2014,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2134,17 +2040,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2159,7 +2065,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2170,10 +2076,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2181,10 +2087,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2195,7 +2101,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2232,131 +2138,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2373,59 +2257,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2442,7 +2320,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2453,11 +2331,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2471,17 +2349,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2495,332 +2373,230 @@ i32.store8 end ) - (func $~lib/array/Array#push (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - i32.const 1180 - i32.load - local.tee $8 - i32.const 1 - i32.add - local.tee $7 - local.tee $5 - i32.const 1176 + local.get $0 + i32.const 20 + i32.sub + local.tee $2 i32.load - local.tee $10 - i32.const 2 - i32.shr_u - i32.gt_u + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $1 + local.get $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.sub local.get $5 - i32.const 268435455 - i32.gt_u + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u if - i32.const 1616 - i32.const 1664 - i32.const 18 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/rt/itcms/__renew - local.get $10 - i32.const 1 - i32.shl - local.tee $4 - i32.const 1073741820 - local.get $4 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $5 - i32.const 8 + local.get $1 + local.get $0 local.get $5 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $4 - local.get $2 - local.get $4 - i32.gt_u - select - local.tee $9 - local.tee $11 - i32.const 1168 - i32.load - local.tee $6 - local.tee $1 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.gt_u + if + local.get $0 + i32.const 7 i32.and - i32.const 16 - i32.sub - i32.le_u + local.get $1 + i32.const 7 + i32.and + i32.eq if - local.get $3 - local.get $11 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end end - local.get $11 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $5 - local.set $4 - local.get $11 - local.get $3 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $11 - i32.gt_u - select - local.set $11 - block $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $4 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $4 - i32.sub - local.get $11 - i32.sub - i32.const 0 - local.get $11 - i32.const 1 - i32.shl - i32.sub - i32.le_u + loop $while-continue|2 + local.get $5 if - local.get $4 local.get $1 - local.get $11 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 end - local.get $1 - local.get $4 - i32.gt_u - if + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 local.get $1 + local.get $5 + i32.add i32.const 7 i32.and - local.get $4 - i32.const 7 - i32.and - i32.eq if - loop $while-continue|0 - local.get $4 - i32.const 7 - i32.and - if - local.get $11 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - local.get $4 - local.tee $3 - i32.const 1 - i32.add - local.set $4 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $11 - i32.const 8 - i32.ge_u - if - local.get $4 - local.get $1 - i64.load - i64.store - local.get $11 - i32.const 8 - i32.sub - local.set $11 - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $11 - if - local.get $4 - local.tee $3 - i32.const 1 - i32.add - local.set $4 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - br $while-continue|2 - end + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end - else - local.get $1 - i32.const 7 - i32.and - local.get $4 - i32.const 7 - i32.and - i32.eq + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u if - loop $while-continue|3 - local.get $4 - local.get $11 - i32.add - i32.const 7 - i32.and - if - local.get $11 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.get $11 - i32.const 1 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $11 - i32.const 8 - i32.ge_u - if - local.get $4 - local.get $11 - i32.const 8 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $11 - if - local.get $4 - local.get $11 - i32.const 1 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 end end end - local.get $5 - local.set $1 - end - local.get $1 - local.get $10 - i32.add - local.get $9 - local.get $10 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $6 - i32.ne - if - i32.const 1168 - local.get $1 - i32.store - i32.const 1172 - local.get $1 - i32.store - i32.const 1168 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end - i32.const 1176 - local.get $9 - i32.store end - i32.const 1172 - i32.load - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $0 - i32.store - i32.const 1168 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - i32.const 1180 - local.get $7 - i32.store + local.get $4 ) (func $~lib/array/Array~visit (param $0 i32) (local $1 i32) @@ -2834,18 +2610,18 @@ i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $1 - local.get $2 + local.get $3 i32.lt_u if local.get $1 i32.load - local.tee $3 + local.tee $2 if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 i32.const 4 @@ -2856,7 +2632,11 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner1 @@ -2891,7 +2671,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2900,17 +2680,22 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) block $folding-inner0 + 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 1772 i32.lt_s @@ -3003,10 +2788,6 @@ local.get $0 i32.const 0 i32.store offset=16 - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3020,8 +2801,104 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + i32.const 1180 + i32.load + local.tee $1 + i32.const 1 + i32.add + local.tee $2 + local.tee $5 + i32.const 1176 + i32.load + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $5 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 1168 + i32.load + local.tee $3 + local.get $4 + i32.const 1 + i32.shl + local.tee $6 + i32.const 1073741820 + local.get $6 + i32.const 1073741820 + i32.lt_u + select + local.tee $6 + local.get $5 + i32.const 8 + local.get $5 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $5 + local.get $5 + local.get $6 + i32.lt_u + select + local.tee $5 + call $~lib/rt/itcms/__renew + local.tee $6 + i32.add + local.get $5 + local.get $4 + i32.sub + call $~lib/memory/memory.fill + local.get $3 + local.get $6 + i32.ne + if + i32.const 1168 + local.get $6 + i32.store + i32.const 1172 + local.get $6 + i32.store + local.get $6 + if + local.get $6 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + end + i32.const 1176 + local.get $5 + i32.store + end + i32.const 1172 + i32.load + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $0 - call $~lib/array/Array#push + i32.store + local.get $0 + if + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + i32.const 1180 + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -3035,4 +2912,64 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + i32.const 1152 + i32.load + i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + i32.const 1148 + local.get $0 + local.get $1 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $2 + i32.const 3 + i32.eq + i32.and + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index 9647a38b22..2b3d08b7b4 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -1,8 +1,8 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -42,9 +42,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -111,7 +111,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -134,7 +134,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -144,15 +144,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -217,30 +217,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -277,11 +253,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -293,28 +268,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -326,19 +298,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -363,9 +335,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -373,17 +345,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -511,7 +483,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -522,7 +494,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -542,44 +514,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -589,7 +560,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -599,20 +570,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -640,7 +611,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -667,15 +638,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -687,15 +655,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -716,6 +684,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -725,7 +696,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -762,8 +733,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -922,7 +893,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1047,7 +1022,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1057,7 +1032,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1070,14 +1045,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1107,9 +1081,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1125,13 +1099,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1141,9 +1115,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1213,17 +1187,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1236,16 +1210,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1253,15 +1227,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1288,12 +1262,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1303,7 +1277,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1312,19 +1286,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1354,8 +1328,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1384,89 +1358,34 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -1490,7 +1409,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -1582,9 +1501,56 @@ local.get $0 local.get $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -1592,12 +1558,11 @@ ) (func $export:extends-recursive/Child#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1484 i32.lt_s @@ -1651,9 +1616,6 @@ local.get $0 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1678,4 +1640,23 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/features/gc.optimized.wat b/tests/compiler/features/gc.optimized.wat index 48a9444574..c8b639951c 100644 --- a/tests/compiler/features/gc.optimized.wat +++ b/tests/compiler/features/gc.optimized.wat @@ -1,17 +1,11 @@ (module (type $none_=>_none (func)) - (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) ",") (data (i32.const 1048) "\01\00\00\00\1c\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00g\00c\00.\00t\00s") (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started + nop ) ) diff --git a/tests/compiler/features/nontrapping-f2i.optimized.wat b/tests/compiler/features/nontrapping-f2i.optimized.wat index 35c5fd1474..75a2479112 100644 --- a/tests/compiler/features/nontrapping-f2i.optimized.wat +++ b/tests/compiler/features/nontrapping-f2i.optimized.wat @@ -1,15 +1,9 @@ (module (type $none_=>_none (func)) - (global $~started (mut i32) (i32.const 0)) (memory $0 0) (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started + nop ) ) diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 6b1df4a9bf..7b09a7e9a6 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,10 +1,9 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -53,11 +52,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -69,28 +67,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -102,19 +97,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -139,9 +134,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -149,17 +144,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -287,7 +282,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -298,7 +293,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -318,44 +313,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -365,7 +359,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -375,20 +369,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -416,7 +410,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -443,15 +437,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -463,15 +454,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -492,6 +483,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -501,7 +495,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -538,8 +532,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -614,56 +608,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -741,19 +732,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -764,54 +748,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -819,16 +799,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -836,16 +816,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -862,7 +842,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -872,13 +852,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -891,40 +871,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -944,8 +924,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -989,27 +967,42 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~start (local $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 64 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 local.get $0 v128.load offset=16 v128.store offset=32 local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store8 @@ -1029,8 +1022,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store16 @@ -1050,8 +1051,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store @@ -1071,8 +1080,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i64.const 42 i64.store @@ -1092,8 +1109,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i32.const 42 i32.store @@ -1113,8 +1138,16 @@ end local.get $0 call $~lib/rt/tlsf/__free + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 16 - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $0 i64.const 42 i64.store diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index bc05a86e76..983d7b4f3f 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -58,11 +58,11 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1536 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -129,7 +129,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -152,7 +152,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -162,15 +162,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -235,30 +235,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -295,11 +271,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -311,28 +286,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -344,19 +316,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -381,9 +353,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -391,17 +363,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -529,7 +501,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -540,7 +512,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -560,44 +532,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -607,7 +578,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -617,20 +588,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -658,7 +629,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -685,15 +656,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -705,15 +673,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -734,6 +702,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -743,7 +714,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -780,8 +751,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -940,7 +911,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1065,7 +1040,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1075,7 +1050,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1088,14 +1063,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1120,56 +1094,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1317,14 +1288,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1334,17 +1305,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1360,22 +1331,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1386,11 +1357,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1485,10 +1456,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1496,7 +1463,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1507,54 +1477,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1562,16 +1528,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1580,7 +1546,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1588,9 +1554,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1601,11 +1567,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1616,12 +1582,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1634,89 +1600,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1724,7 +1690,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1732,61 +1698,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -1813,7 +1724,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1827,32 +1738,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1869,29 +1779,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1942,24 +1852,23 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 - local.tee $1 i32.load offset=4 - local.tee $0 + local.tee $1 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $1 + local.get $0 i32.load offset=8 - local.tee $1 + local.tee $0 if - local.get $1 - call $~lib/rt/itcms/__visit + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1970,7 +1879,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1979,7 +1888,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -2149,9 +2058,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2193,9 +2105,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2236,9 +2151,6 @@ local.get $0 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2403,9 +2315,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2447,15 +2362,15 @@ i32.const 0 i32.store local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2475,7 +2390,7 @@ end global.get $~lib/memory/__stack_pointer call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2487,30 +2402,33 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 4 i32.const 13 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store + local.get $2 local.get $0 - local.get $1 i32.store local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.load - local.get $1 + local.get $0 i32.ne if i32.const 0 @@ -2543,9 +2461,6 @@ local.get $0 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2586,9 +2501,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2630,15 +2548,15 @@ i32.const 0 i32.store local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -2741,24 +2659,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 call $field-initialization/SomeObject#constructor - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link local.get $1 - local.get $0 i32.store - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2769,7 +2684,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 local.tee $0 i32.store offset=8 @@ -2786,24 +2701,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 call $field-initialization/SomeObject#constructor - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 i32.const 1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link local.get $1 - local.get $0 i32.store offset=16 - local.get $0 + local.get $1 i32.load i32.const 1 i32.ne @@ -2816,7 +2728,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 local.tee $0 i32.store offset=8 @@ -2833,24 +2745,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 call $field-initialization/SomeObject#constructor - local.tee $0 + local.tee $1 i32.store offset=20 - local.get $0 + local.get $1 i32.const 1648 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1648 - call $~lib/rt/itcms/__link - local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 i32.const 0 i32.store - local.get $1 local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2861,15 +2773,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=4 local.tee $0 - i32.store offset=8 local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=8 + local.get $0 i32.const 1648 i32.store offset=28 - local.get $0 + local.get $1 i32.const 1648 call $~lib/string/String.__eq i32.eqz @@ -2882,24 +2794,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 call $field-initialization/SomeObject#constructor - local.tee $0 + local.tee $1 i32.store offset=32 - local.get $0 + local.get $1 i32.const 2 i32.store - local.get $0 + local.get $1 i32.const 1680 i32.store offset=4 - local.get $0 - i32.const 1680 - call $~lib/rt/itcms/__link local.get $1 + i32.const 1680 + call $byn-split-outlined-A$~lib/rt/itcms/__link local.get $0 + local.get $1 i32.store offset=36 - local.get $0 + local.get $1 i32.load i32.const 2 i32.ne @@ -2912,15 +2824,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=4 local.tee $0 - i32.store offset=8 local.get $1 + i32.load offset=4 + local.tee $1 + i32.store offset=8 + local.get $0 i32.const 1680 i32.store offset=28 - local.get $0 + local.get $1 i32.const 1680 call $~lib/string/String.__eq i32.eqz @@ -2933,29 +2845,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - call $field-initialization/SomeOtherObject#constructor local.tee $0 + call $field-initialization/SomeOtherObject#constructor + local.tee $1 i32.store offset=36 - local.get $0 + local.get $1 i32.const 1712 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1712 - call $~lib/rt/itcms/__link - local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link local.get $1 - local.get $0 i32.store offset=24 - local.get $0 + local.get $1 i32.load if i32.const 0 @@ -2966,11 +2875,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz @@ -2983,15 +2892,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=8 local.tee $0 - i32.store offset=8 local.get $1 + i32.load offset=8 + local.tee $1 + i32.store offset=8 + local.get $0 i32.const 1712 i32.store offset=28 - local.get $0 + local.get $1 i32.const 1712 call $~lib/string/String.__eq i32.eqz @@ -3004,29 +2913,29 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - call $field-initialization/SomeOtherObject#constructor local.tee $0 + call $field-initialization/SomeOtherObject#constructor + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 i32.store - local.get $0 + local.get $1 i32.const 1744 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1744 - call $~lib/rt/itcms/__link - local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $1 i32.const 1776 i32.store offset=8 - local.get $0 - i32.const 1776 - call $~lib/rt/itcms/__link local.get $1 + i32.const 1776 + call $byn-split-outlined-A$~lib/rt/itcms/__link local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load i32.const 3 i32.ne @@ -3039,12 +2948,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $0 + local.get $1 i32.load offset=4 local.tee $2 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1744 i32.store offset=28 local.get $2 @@ -3060,15 +2969,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=8 local.tee $0 - i32.store offset=8 local.get $1 + i32.load offset=8 + local.tee $1 + i32.store offset=8 + local.get $0 i32.const 1776 i32.store offset=28 - local.get $0 + local.get $1 i32.const 1776 call $~lib/string/String.__eq i32.eqz @@ -3104,15 +3013,15 @@ i32.const 0 i32.store local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3131,7 +3040,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 + local.get $0 i32.const 4 i32.const 23 call $~lib/rt/itcms/__new @@ -3141,10 +3051,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.store offset=24 local.get $0 @@ -3159,7 +3071,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 + local.get $0 i32.const 4 i32.const 24 call $~lib/rt/itcms/__new @@ -3169,16 +3082,15 @@ i32.const 0 i32.store local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link - local.get $1 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.store local.get $0 @@ -3275,9 +3187,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3319,9 +3234,6 @@ local.get $0 i32.const 0 i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -3363,13 +3275,78 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/field.optimized.wat b/tests/compiler/field.optimized.wat index 5b26035e25..9f4d2c187a 100644 --- a/tests/compiler/field.optimized.wat +++ b/tests/compiler/field.optimized.wat @@ -38,9 +38,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -107,7 +107,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -130,7 +130,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -140,15 +140,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -213,30 +213,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -273,11 +249,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -289,28 +264,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -322,19 +294,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -359,9 +331,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -369,17 +341,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -507,7 +479,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -518,7 +490,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -538,44 +510,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -585,7 +556,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -595,20 +566,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -636,7 +607,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -663,15 +634,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -683,15 +651,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -712,6 +680,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -721,7 +692,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -758,8 +729,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -918,7 +889,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1043,7 +1018,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1053,7 +1028,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1066,14 +1041,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1098,56 +1072,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1248,12 +1219,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1269,14 +1240,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1287,18 +1258,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1309,71 +1279,67 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 i32.add - i32.const 65535 + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1381,15 +1347,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1417,12 +1383,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1436,7 +1402,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1446,7 +1412,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1464,12 +1430,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1499,8 +1465,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1529,19 +1495,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1550,18 +1516,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1570,10 +1536,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1582,97 +1548,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1704,62 +1670,7 @@ end end end - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (local $1 i32) @@ -1768,9 +1679,9 @@ (local $4 i32) (local $5 i32) i32.const 1456 - local.set $3 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $1 i32.const 3 i32.and i32.const 0 @@ -1782,13 +1693,13 @@ i32.const 1 i32.add local.set $0 - local.get $3 - local.tee $1 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -1809,25 +1720,25 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=8 i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=12 i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -1844,17 +1755,17 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=4 i32.store offset=4 - local.get $3 + local.get $1 i32.const 8 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 8 i32.add @@ -1865,13 +1776,13 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 4 i32.add @@ -1882,13 +1793,13 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load16_u i32.store16 - local.get $3 + local.get $1 i32.const 2 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 2 i32.add @@ -1899,7 +1810,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -1920,15 +1831,15 @@ i32.sub br_table $case0|2 $case1|2 $case2|2 $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.get $3 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 @@ -1938,15 +1849,15 @@ i32.const 1 i32.add local.set $0 - local.get $3 + local.get $1 i32.const 2 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -1959,7 +1870,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=1 local.tee $2 i32.const 8 @@ -1970,9 +1881,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=5 - local.tee $1 + local.tee $3 i32.const 8 i32.shl local.get $2 @@ -1981,18 +1892,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=9 local.tee $2 i32.const 8 i32.shl - local.get $1 + local.get $3 i32.const 24 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=13 local.tee $4 i32.const 8 @@ -2002,10 +1913,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2019,25 +1930,25 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.tee $2 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 local.get $5 @@ -2050,7 +1961,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=2 local.tee $2 i32.const 16 @@ -2061,9 +1972,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=6 - local.tee $1 + local.tee $3 i32.const 16 i32.shl local.get $2 @@ -2072,18 +1983,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=10 local.tee $2 i32.const 16 i32.shl - local.get $1 + local.get $3 i32.const 16 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=14 local.tee $4 i32.const 16 @@ -2093,10 +2004,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2110,7 +2021,7 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 @@ -2118,13 +2029,13 @@ i32.const 1 i32.add local.set $0 - local.get $3 - local.tee $1 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -2137,7 +2048,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=3 local.tee $2 i32.const 24 @@ -2148,9 +2059,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=7 - local.tee $1 + local.tee $3 i32.const 24 i32.shl local.get $2 @@ -2159,18 +2070,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=11 local.tee $2 i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 8 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=15 local.tee $4 i32.const 24 @@ -2180,10 +2091,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2202,288 +2113,238 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 8 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 4 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 2 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.tee $2 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2492,7 +2353,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -2505,274 +2366,361 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - local.get $2 - i32.const 4 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - 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 1524 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 0 - i32.store - i32.const 1456 - local.set $2 - block $~lib/util/memory/memmove|inlined.0 + block $folding-inner1 + block $folding-inner0 + 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 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 + i32.store + local.get $0 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 + i32.store + local.get $0 + i32.const 4 + i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 - local.tee $3 - i32.const 1456 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - i32.const 1456 - i32.eq - if - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 + local.tee $4 + i32.store + 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 1524 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 i32.const 1456 - i32.lt_u - if - local.get $3 - i32.const 7 - i32.and - i32.eqz + local.set $1 + block $~lib/util/memory/memmove|inlined.0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + local.tee $0 + i32.const 1456 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + i32.const 1456 + i32.eq if - loop $while-continue|0 - local.get $3 - i32.const 7 - i32.and + local.get $0 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + i32.const 1456 + i32.lt_u + if + local.get $0 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $6 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $6 + i32.const 8 + i32.sub + local.set $6 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $6 if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $3 - local.tee $1 + local.get $0 + local.tee $2 i32.const 1 i32.add - local.set $3 - local.get $2 - local.tee $0 + local.set $0 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $2 - local.get $1 - local.get $0 + local.set $1 + local.get $2 + local.get $3 i32.load8_u i32.store8 - br $while-continue|0 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 end end - loop $while-continue|1 - local.get $8 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $2 - i64.load - i64.store - local.get $8 - i32.const 8 - i32.sub - local.set $8 - local.get $3 - i32.const 8 + else + local.get $0 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|3 + local.get $0 + local.get $6 i32.add - local.set $3 - local.get $2 + i32.const 7 + i32.and + if + local.get $6 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + local.get $0 + i32.add + local.get $6 + i32.const 1456 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $6 i32.const 8 - i32.add - local.set $2 - br $while-continue|1 + i32.ge_u + if + local.get $6 + i32.const 8 + i32.sub + local.tee $6 + local.get $0 + i32.add + local.get $6 + i32.const 1456 + i32.add + i64.load + i64.store + br $while-continue|4 + end end end - end - loop $while-continue|2 - local.get $8 - if - local.get $3 - local.tee $1 - i32.const 1 - i32.add - local.set $3 - local.get $2 - local.tee $0 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.get $0 - i32.load8_u - i32.store8 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $3 - local.get $8 - i32.add - i32.const 7 - i32.and + loop $while-continue|5 + local.get $6 if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 + local.get $6 i32.const 1 i32.sub - local.tee $8 - local.get $3 + local.tee $6 + local.get $0 i32.add - local.get $8 + local.get $6 i32.const 1456 i32.add i32.load8_u i32.store8 - br $while-continue|3 + br $while-continue|5 end end - loop $while-continue|4 - local.get $8 - i32.const 8 - i32.ge_u + end + end + local.get $5 + i32.store + i32.const 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $5 + i32.store + local.get $5 + if + local.get $1 + i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + local.get $5 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $2 + i32.const 3 + i32.eq + i32.and if - local.get $8 - i32.const 8 - i32.sub - local.tee $8 - local.get $3 - i32.add - local.get $8 - i32.const 1456 - i32.add - i64.load - i64.store - br $while-continue|4 + local.get $0 + call $~lib/rt/itcms/Object#makeGray end end end - loop $while-continue|5 - local.get $8 + end + local.get $1 + local.get $5 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.tee $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq if - local.get $8 + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state i32.const 1 - i32.sub - local.tee $8 - local.get $3 - i32.add - local.get $8 - i32.const 1456 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $4 - local.get $7 - i32.store - i32.const 16 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $7 - i32.store - local.get $2 - local.get $7 - call $~lib/rt/itcms/__link - local.get $2 - local.get $7 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $2 - i32.store - local.get $6 - local.get $2 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $6 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 17936 - i32.const 17984 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 call $~lib/builtins/abort unreachable ) @@ -2782,57 +2730,54 @@ (local $3 i32) block $folding-inner0 block $invalid - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String> - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return + block $~lib/array/Array<~lib/string/String> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid end return end - local.get $0 - local.tee $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u + return + end + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 if - local.get $2 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $1 - i32.load - call $~lib/rt/itcms/__visit - return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -2842,7 +2787,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -2913,4 +2858,23 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index 671fc61a00..50bf8dd7c8 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17892 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1472 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1100,9 +944,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1118,13 +962,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1134,9 +978,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1154,281 +998,281 @@ (local $0 i32) (local $1 i32) (local $2 i32) - loop $for-loop|0 + block $folding-inner0 + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end local.get $0 i32.const 10 - i32.lt_s + i32.ne if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + i32.const 1056 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - i32.const 10 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|00 + local.set $0 + loop $for-loop|00 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end local.get $0 i32.const 10 - i32.lt_s + i32.ne if + i32.const 0 + i32.const 1056 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $for-loop|01 local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|01 + end end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $for-loop|01 local.get $0 - i32.const 0 - i32.gt_s if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|01 + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - if i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|02 + local.set $0 + loop $for-loop|02 + local.get $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|02 + end + end local.get $0 i32.const 10 i32.ne if + i32.const 0 + i32.const 1056 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $for-loop|03 local.get $0 i32.const 1 - i32.add - local.set $0 - br $for-loop|02 + i32.sub + local.tee $0 + br_if $for-loop|03 end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $for-loop|03 local.get $0 - i32.const 1 - i32.sub - local.tee $0 - br_if $for-loop|03 - end - local.get $0 - if + if + i32.const 0 + i32.const 1056 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|05 + local.set $0 + loop $for-loop|05 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $for-loop|05 + end local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne - br_if $for-loop|05 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 61 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|07 - local.get $0 - i32.const 10 - i32.lt_s if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|07 + i32.const 0 + i32.const 1056 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - i32.const 10 - i32.ne - if i32.const 0 - i32.const 1056 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $for-loop|08 + local.set $0 + loop $for-loop|07 + local.get $0 + i32.const 10 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|07 + end + end local.get $0 i32.const 10 - i32.lt_s + i32.ne if + i32.const 0 + i32.const 1056 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $for-loop|08 local.get $0 - i32.const 2 - i32.ge_s + i32.const 10 + i32.lt_s if - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 10 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.add - local.get $2 - local.get $0 + local.get $0 + i32.const 2 + i32.ge_s + if + i32.const 0 + local.set $1 + loop $for-loop|1 local.get $1 + i32.const 10 i32.lt_s - select - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + if + local.get $2 + i32.const 1 + i32.add + local.get $2 + local.get $0 + local.get $1 + i32.lt_s + select + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end end end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|08 end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|08 end - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 120 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 28 - i32.ne - if + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 121 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 28 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17892 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace i32.const 0 - i32.const 1056 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 17892 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + local.set $2 + 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 1508 i32.lt_s @@ -1439,30 +1283,30 @@ i32.store local.get $0 call $for/Ref#constructor - local.tee $0 + local.tee $1 i32.store - loop $for-loop|09 - local.get $0 + loop $for-loop|06 + local.get $1 if - local.get $1 + local.get $2 i32.const 1 i32.add - local.tee $1 + local.tee $2 i32.const 10 i32.eq if i32.const 0 - local.set $0 + local.set $1 else global.get $~lib/memory/__stack_pointer call $for/Ref#constructor - local.tee $0 + local.tee $1 i32.store end - br $for-loop|09 + br $for-loop|06 end end - local.get $1 + local.get $2 i32.const 10 i32.ne if @@ -1473,7 +1317,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1056 @@ -1507,10 +1351,10 @@ call $for/Ref#constructor local.tee $0 i32.store - loop $for-loop|06 + loop $for-loop|09 call $for/Ref#constructor if - block $for-break07 + block $for-break010 local.get $1 i32.const 1 i32.add @@ -1520,13 +1364,13 @@ if i32.const 0 local.set $0 - br $for-break07 + br $for-break010 end global.get $~lib/memory/__stack_pointer call $for/Ref#constructor local.tee $0 i32.store - br $for-loop|06 + br $for-loop|09 end end end @@ -1617,7 +1461,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1650,7 +1494,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1704,17 +1548,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1727,16 +1571,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1744,15 +1588,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1779,22 +1623,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1803,19 +1647,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1827,8 +1671,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1841,12 +1685,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1860,7 +1704,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1872,16 +1716,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17892 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1472 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) ) diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index 6c96a509aa..2316b256cb 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -74,12 +74,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -118,160 +118,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18220 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1760 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1764 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -308,11 +154,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -324,28 +169,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -357,19 +199,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -394,9 +236,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -404,17 +246,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -542,7 +384,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -553,7 +395,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -573,44 +415,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -620,7 +461,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -630,20 +471,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -671,7 +512,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -698,15 +539,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -718,15 +556,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -747,6 +585,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -756,7 +597,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -793,8 +634,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -953,7 +794,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1078,7 +923,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1088,7 +933,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1101,14 +946,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1138,9 +982,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1156,13 +1000,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1172,9 +1016,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1218,7 +1062,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1228,7 +1072,11 @@ end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start (local $0 i32) @@ -1339,7 +1187,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1399,11 +1247,11 @@ i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1416,16 +1264,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1434,7 +1282,7 @@ end end local.get $3 - local.get $1 + local.get $0 i32.const 16 i32.shl memory.size @@ -1473,17 +1321,17 @@ call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1492,19 +1340,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $4 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $3 - local.get $1 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1516,8 +1364,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1530,26 +1378,26 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 - local.get $4 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1561,23 +1409,23 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $2 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $2 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 global.set $function-call/foo global.get $~lib/memory/__stack_pointer global.get $function-call/foo - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 1680 i32.load call_indirect $0 (type $i32_=>_none) @@ -1597,9 +1445,9 @@ end global.get $~lib/memory/__stack_pointer global.get $function-call/foo - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 1 i32.const 2 i32.const 1744 @@ -1628,4 +1476,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18220 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1760 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1764 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 9174601471..b631942f37 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -106,9 +106,9 @@ (local $0 i32) (local $1 i32) i32.const 1792 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1600 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -175,7 +175,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -198,7 +198,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -208,15 +208,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -281,30 +281,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -341,11 +317,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -357,28 +332,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -390,19 +362,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -427,9 +399,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -437,17 +409,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -575,7 +547,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -586,7 +558,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -606,44 +578,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -653,7 +624,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -663,20 +634,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -704,7 +675,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -731,15 +702,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -751,15 +719,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -780,6 +748,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -789,7 +760,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -826,8 +797,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -986,7 +957,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1111,7 +1086,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1121,7 +1096,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1134,14 +1109,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1171,9 +1145,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1189,13 +1163,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1205,9 +1179,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1221,459 +1195,337 @@ end end ) - (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $0 i64) (result i64) - local.get $0 - ) - (func $function-expression/semanticallyAnonymous + (func $~lib/rt/itcms/__new (result i32) (local $0 i32) - 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 2196 - i32.lt_s + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 18608 - i32.const 18656 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 2064 - i32.store - local.get $0 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid - end - return + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt end - return + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 end - unreachable + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return end - local.get $0 - i32.load + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock local.tee $0 + i32.eqz if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 local.get $0 - call $~lib/rt/itcms/__visit - end - ) - (func $~start - call $start:function-expression - ) - (func $function-expression/testField - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 2032 - i32.store - local.get $5 + i32.const 16 + i32.shl i32.const 4 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2196 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u local.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow i32.const 0 - i32.store - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz + i32.lt_s if - memory.size - local.tee $2 - i32.const 4 - local.get $3 - i32.load offset=1568 - local.get $2 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $0 - local.get $2 - i32.lt_s - select + local.get $1 memory.grow i32.const 0 i32.lt_s if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $3 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1936 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort unreachable end end + local.get $2 local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz if i32.const 0 i32.const 1936 - i32.const 498 - i32.const 14 + i32.const 496 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 - local.get $0 - call $~lib/rt/tlsf/removeBlock + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $1 + i32.const 16 + i32.ge_u + if local.get $0 - i32.load - local.tee $2 - i32.const -4 + local.get $3 + i32.const 2 i32.and i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $2 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $3 - local.get $2 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $2 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 8 - i32.store offset=12 + i32.or + i32.store local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $1 i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $2 - i32.load offset=8 - local.set $4 - local.get $0 - global.get $~lib/rt/itcms/white - local.get $2 + i32.sub + i32.const 1 i32.or - i32.store offset=4 + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else local.get $0 - local.get $4 - i32.store offset=8 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const 3 + local.get $3 + i32.const -2 i32.and + i32.store local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total + i32.const 4 + i32.add local.get $0 i32.load i32.const -4 i32.and - i32.const 4 - i32.add i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - local.tee $2 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - local.get $0 - i32.store - local.get $0 - i32.const 2032 - i32.store - local.get $0 local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1664 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - i32.const 2016 + local.get $1 i32.load - i32.const 3 + i32.const -3 i32.and - i32.eq - if - local.get $1 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - i32.const 2012 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - i32.const 2012 - call $~lib/rt/itcms/Object#makeGray + i32.store + end + local.get $0 + i32.const 8 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $1 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + ) + (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $0 i64) (result i64) + local.get $0 + ) + (func $function-expression/semanticallyAnonymous + (local $0 i32) + 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 2196 + i32.lt_s + if + i32.const 18608 + i32.const 18656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 2064 + i32.store + local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return end + return end + unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load - i32.load - call_indirect $0 (type $none_=>_i32) - local.tee $1 - i32.store offset=8 - i32.const 1 - local.get $1 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 25 - i32.ne + local.get $0 + i32.load offset=4 + local.tee $0 if - i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer return end - i32.const 18608 - i32.const 18656 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) - (func $start:function-expression + (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $1 i32) block $folding-inner0 + 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 2196 i32.lt_s @@ -1931,7 +1783,119 @@ i32.store i32.const 1888 global.set $~lib/rt/itcms/fromSpace - call $function-expression/testField + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 2032 + i32.store + local.get $0 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2196 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 2032 + i32.store + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + i32.const 2016 + i32.load + i32.const 3 + i32.and + i32.eq + if + local.get $1 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + i32.load + call_indirect $0 (type $none_=>_i32) + local.tee $0 + i32.store offset=8 + i32.const 1 + local.get $0 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer i32.const 4 @@ -2036,4 +2000,23 @@ global.set $~lib/memory/__stack_pointer i32.const 2000 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 691bd94c4a..7b0fd33255 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -40,11 +40,12 @@ ) (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $1 i32) block $folding-inner0 + 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 1228 i32.lt_s @@ -107,13 +108,13 @@ end global.get $~lib/memory/__stack_pointer global.get $function-types/i32Adder - local.tee $0 + local.tee $1 i32.store i32.const 2 global.set $~argumentsLength i32.const 2 i32.const 3 - local.get $0 + local.get $1 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 5 @@ -165,8 +166,6 @@ end i32.const 2 global.set $~argumentsLength - i32.const 0 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -188,10 +187,9 @@ end unreachable end - i32.const 1056 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 1056 + local.tee $0 i32.store end i32.const 2 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 64a781b647..947f743f02 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -42,9 +42,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -83,160 +83,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17900 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1472 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1476 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -273,11 +119,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -289,28 +134,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -322,19 +164,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -359,9 +201,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -369,17 +211,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -507,7 +349,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -518,7 +360,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -538,44 +380,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -585,7 +426,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -595,20 +436,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -636,7 +477,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -663,15 +504,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -683,15 +521,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -712,6 +550,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -721,7 +562,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -758,8 +599,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -918,7 +759,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1043,7 +888,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1053,7 +898,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1066,14 +911,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1103,9 +947,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1121,13 +965,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1137,9 +981,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1178,7 +1022,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1186,7 +1030,11 @@ end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -1225,284 +1073,441 @@ i32.const 1344 global.set $~lib/rt/itcms/fromSpace ) - (func $getter-call/test (result i32) + (func $getter-call/C#constructor (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1516 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1516 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 0 - i32.store - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 + global.get $~lib/memory/__stack_pointer + i32.const 1516 + i32.lt_s + if + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub local.set $0 - loop $do-loop|0 - local.get $0 - call $~lib/rt/itcms/step - i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt end - global.get $~lib/rt/itcms/total - local.tee $0 local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold + i32.const 0 + i32.gt_s + br_if $do-loop|0 end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $3 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold i32.sub - i32.ne + i32.const 1024 + i32.lt_u + i32.const 10 i32.shl - i32.const 65563 i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $0 - local.get $1 - i32.lt_s - select + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $3 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $0 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 memory.grow i32.const 0 i32.lt_s if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $3 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort unreachable end end + local.get $3 local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz if i32.const 0 i32.const 1392 - i32.const 498 - i32.const 14 + i32.const 496 + i32.const 16 call $~lib/builtins/abort unreachable end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $4 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $4 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $4 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store local.get $3 + local.get $4 + call $~lib/rt/tlsf/insertBlock + else local.get $0 - call $~lib/rt/tlsf/removeBlock + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add local.get $0 i32.load - local.tee $1 i32.const -4 i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + i32.add + local.tee $2 + local.get $2 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $getter-call/test (result i32) + (local $0 i32) + 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 1516 + i32.lt_s + if + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $getter-call/C#constructor + i32.store + i32.const 1456 + i32.load + call_indirect $0 (type $none_=>_i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $1 - i32.const 2 + i32.load offset=4 + i32.const -4 i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $1 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $3 + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17900 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $1 - call $~lib/rt/tlsf/insertBlock - else + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $1 - i32.const -2 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 i32.and - i32.store - local.get $0 - i32.const 4 - i32.add local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1472 i32.load - i32.const -4 - i32.and + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1476 i32.add - local.tee $1 - local.get $1 i32.load - i32.const -3 + i32.const 32 i32.and - i32.store end - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 i32.load offset=8 - local.set $4 - local.get $0 - global.get $~lib/rt/itcms/white + local.set $0 local.get $1 + local.get $2 + local.get $3 i32.or i32.store offset=4 + local.get $1 local.get $0 - local.get $4 i32.store offset=8 - local.get $4 - local.get $4 + local.get $0 + local.get $0 i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 + local.get $2 local.get $1 - local.get $0 i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - local.get $0 - i32.const 20 - i32.add - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $2 - i32.store - i32.const 1456 - i32.load - call_indirect $0 (type $none_=>_i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + global.get $~lib/rt/itcms/visitCount + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - return + global.set $~lib/rt/itcms/visitCount end - i32.const 17920 - i32.const 17968 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable ) ) diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index a7058bf423..62063b669b 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -61,11 +61,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -77,28 +76,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -110,19 +106,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -147,9 +143,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -157,17 +153,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -295,7 +291,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -306,7 +302,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -326,44 +322,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -373,7 +368,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -383,20 +378,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -424,7 +419,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -451,15 +446,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -471,15 +463,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -500,6 +492,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -509,7 +504,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -546,8 +541,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -632,73 +627,68 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $0 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $0 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -854,30 +844,13 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.tee $1 - call $~lib/rt/tlsf/searchBlock local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 i32.eqz if memory.size local.tee $3 - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $1 - i32.add - else - local.get $1 - end i32.const 4 local.get $0 i32.load offset=1568 @@ -888,6 +861,21 @@ i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $2 + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -895,8 +883,8 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 local.get $3 i32.lt_s select @@ -904,7 +892,7 @@ i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -921,9 +909,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $0 - local.get $1 + local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -934,11 +922,11 @@ unreachable end end - local.get $2 + local.get $1 i32.load i32.const -4 i32.and - local.get $1 + local.get $2 i32.lt_u if i32.const 0 @@ -949,13 +937,13 @@ unreachable end local.get $0 - local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $2 local.get $1 - call $~lib/rt/tlsf/prepareBlock local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $1 ) (func $~lib/memory/heap.alloc (param $0 i32) (result i32) global.get $~lib/rt/tlsf/ROOT @@ -1012,17 +1000,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1168,19 +1156,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1195,7 +1183,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1206,10 +1194,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1217,10 +1205,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1231,7 +1219,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1261,17 +1249,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -1286,7 +1274,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -1297,10 +1285,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1308,10 +1296,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -1322,7 +1310,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1348,17 +1336,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1373,7 +1361,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -1384,10 +1372,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -1395,10 +1383,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -1409,7 +1397,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -1446,131 +1434,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -1587,59 +1553,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -1656,7 +1616,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -1667,11 +1627,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -1685,17 +1645,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -1718,24 +1678,24 @@ local.get $0 local.get $2 call $~lib/rt/tlsf/allocateBlock - local.tee $6 - i32.const 4 - i32.add - local.set $2 + local.set $6 local.get $1 i32.load i32.const -4 i32.and local.set $7 block $~lib/util/memory/memmove|inlined.0 - local.get $2 + local.get $6 + i32.const 4 + i32.add + local.tee $2 local.get $1 i32.const 4 i32.add - local.tee $5 + local.tee $3 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 + local.get $3 local.get $2 i32.sub local.get $7 @@ -1748,16 +1708,16 @@ i32.le_u if local.get $2 - local.get $5 + local.get $3 local.get $7 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end local.get $2 - local.get $5 + local.get $3 i32.lt_u if - local.get $5 + local.get $3 i32.const 7 i32.and local.get $2 @@ -1782,13 +1742,13 @@ i32.const 1 i32.add local.set $2 - local.get $5 - local.tee $3 + local.get $3 + local.tee $5 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $4 - local.get $3 + local.get $5 i32.load8_u i32.store8 br $while-continue|0 @@ -1800,7 +1760,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $3 i64.load i64.store local.get $7 @@ -1811,10 +1771,10 @@ i32.const 8 i32.add local.set $2 - local.get $5 + local.get $3 i32.const 8 i32.add - local.set $5 + local.set $3 br $while-continue|1 end end @@ -1827,13 +1787,13 @@ i32.const 1 i32.add local.set $2 - local.get $5 - local.tee $3 + local.get $3 + local.tee $5 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $4 - local.get $3 + local.get $5 i32.load8_u i32.store8 local.get $7 @@ -1844,7 +1804,7 @@ end end else - local.get $5 + local.get $3 i32.const 7 i32.and local.get $2 @@ -1862,13 +1822,13 @@ local.get $7 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 local.get $7 i32.const 1 i32.sub local.tee $7 + local.get $2 i32.add - local.get $5 + local.get $3 local.get $7 i32.add i32.load8_u @@ -1881,13 +1841,13 @@ i32.const 8 i32.ge_u if - local.get $2 local.get $7 i32.const 8 i32.sub local.tee $7 + local.get $2 i32.add - local.get $5 + local.get $3 local.get $7 i32.add i64.load @@ -1899,13 +1859,13 @@ loop $while-continue|5 local.get $7 if - local.get $2 local.get $7 i32.const 1 i32.sub local.tee $7 + local.get $2 i32.add - local.get $5 + local.get $3 local.get $7 i32.add i32.load8_u @@ -1955,54 +1915,53 @@ else block $__inlined_func$~lib/rt/tlsf/reallocateBlock (result i32) global.get $~lib/rt/tlsf/ROOT - local.set $3 + local.set $2 local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.set $2 + local.set $6 block $folding-inner0 local.get $1 - local.tee $0 call $~lib/rt/tlsf/prepareSize - local.tee $1 - local.get $2 + local.tee $4 + local.get $6 i32.load - local.tee $5 + local.tee $0 i32.const -4 i32.and - local.tee $4 + local.tee $5 i32.le_u br_if $folding-inner0 - local.get $2 + local.get $6 i32.const 4 i32.add - local.get $2 + local.get $6 i32.load i32.const -4 i32.and i32.add - local.tee $6 + local.tee $3 i32.load local.tee $7 i32.const 1 i32.and if - local.get $1 local.get $4 + local.get $5 i32.const 4 i32.add local.get $7 i32.const -4 i32.and i32.add - local.tee $4 + local.tee $5 i32.le_u if + local.get $2 local.get $3 - local.get $6 call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $4 + local.get $6 local.get $5 + local.get $0 i32.const 3 i32.and i32.or @@ -2010,17 +1969,17 @@ br $folding-inner0 end end - local.get $3 local.get $2 - local.get $0 + local.get $6 + local.get $1 call $~lib/rt/tlsf/moveBlock br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $3 local.get $2 - local.get $1 + local.get $6 + local.get $4 call $~lib/rt/tlsf/prepareBlock - local.get $2 + local.get $6 end end i32.const 4 diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 7ac15c9898..4c5afbfd43 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -48,9 +48,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -117,7 +117,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -140,7 +140,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -150,15 +150,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -223,30 +223,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -283,11 +259,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -299,28 +274,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -332,19 +304,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -369,9 +341,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -379,17 +351,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -517,7 +489,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -528,7 +500,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -548,44 +520,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -595,7 +566,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -605,20 +576,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -646,7 +617,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -673,15 +644,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -693,15 +661,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -722,6 +690,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -731,7 +702,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -768,8 +739,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -928,7 +899,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1053,7 +1028,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1063,7 +1038,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1076,14 +1051,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1113,9 +1087,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1131,13 +1105,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1147,9 +1121,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1219,17 +1193,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1242,16 +1216,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1259,15 +1233,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1294,12 +1268,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1309,7 +1283,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1318,19 +1292,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1360,8 +1334,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1390,89 +1364,34 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 @@ -1499,7 +1418,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -1595,11 +1514,11 @@ ) (func $export:implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1484 i32.lt_s @@ -1704,9 +1623,12 @@ local.get $0 local.get $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -1714,11 +1636,11 @@ ) (func $export:implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1484 i32.lt_s @@ -1753,9 +1675,12 @@ local.get $0 local.get $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -1774,4 +1699,72 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index e0719f3a8f..53d477f058 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -72,11 +72,11 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2000 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -143,7 +143,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -166,7 +166,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -176,15 +176,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -249,30 +249,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -309,11 +285,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -325,28 +300,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -358,19 +330,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -395,9 +367,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -405,17 +377,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -543,7 +515,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -554,7 +526,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -574,44 +546,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -621,7 +592,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -631,20 +602,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -672,7 +643,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -699,15 +670,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -719,15 +687,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -748,6 +716,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -757,7 +728,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -794,8 +765,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -954,7 +925,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1079,7 +1054,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1089,7 +1064,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1102,14 +1077,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1134,56 +1108,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1284,12 +1255,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1305,14 +1276,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1323,18 +1294,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1345,71 +1315,67 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1417,15 +1383,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1453,12 +1419,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1472,7 +1438,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1482,7 +1448,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1500,12 +1466,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1535,8 +1501,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1565,19 +1531,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1586,18 +1552,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1606,10 +1572,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1618,97 +1584,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1740,7 +1706,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1755,17 +1721,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1911,19 +1877,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1938,7 +1904,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1949,10 +1915,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1960,10 +1926,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1974,7 +1940,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2004,17 +1970,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2029,7 +1995,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2040,10 +2006,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2051,10 +2017,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2065,7 +2031,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2091,17 +2057,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2116,7 +2082,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2127,10 +2093,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2138,10 +2104,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2152,7 +2118,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2189,131 +2155,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 - local.tee $4 + local.get $3 i32.const 2 i32.add local.set $1 + local.get $0 local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 i32.const 2 i32.add local.set $0 - local.get $1 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - i32.const 2 - i32.add - local.set $1 end local.get $2 i32.const 8 @@ -2330,59 +2274,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2399,7 +2337,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2410,11 +2348,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2428,17 +2366,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2452,66 +2390,6 @@ i32.store8 end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 @@ -2521,93 +2399,96 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $start:infer-array (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2212 - i32.lt_s - if - i32.const 18624 - i32.const 18672 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - memory.size - i32.const 16 - i32.shl - i32.const 18596 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - local.get $0 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 1056 - call $~lib/rt/__newArray - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - i32.const 3 - i32.const 4 - i32.const 1536 - call $~lib/rt/__newArray - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 2 - i32.const 5 - i32.const 1584 - call $~lib/rt/__newArray - local.tee $0 - i32.store block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2212 + i32.lt_s + if + i32.const 18624 + i32.const 18672 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 18596 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + local.get $0 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 1056 + call $~lib/rt/__newArray + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 3 + i32.const 4 + i32.const 1536 + call $~lib/rt/__newArray + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 5 + i32.const 1584 + call $~lib/rt/__newArray + local.tee $0 + i32.store local.get $0 i32.load offset=12 i32.const 1 @@ -2652,11 +2533,11 @@ drop global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $2 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2665,29 +2546,29 @@ i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.load offset=4 i32.store offset=12 - local.get $0 + local.get $3 i32.const 0 - local.get $1 - call $~lib/array/Array#__uset local.get $0 + call $~lib/array/Array#__uset + local.get $3 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__uset - local.get $0 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $1 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $2 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2696,25 +2577,25 @@ i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.load offset=4 i32.store offset=8 - local.get $0 + local.get $3 i32.const 0 - local.get $1 - call $~lib/array/Array#__uset local.get $0 + call $~lib/array/Array#__uset + local.get $3 i32.const 1 - local.get $2 + local.get $1 call $~lib/array/Array#__uset - local.get $0 + local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer call $infer-array/Ref#constructor - local.tee $1 + local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2723,21 +2604,21 @@ i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.load offset=4 i32.store offset=12 - local.get $0 + local.get $2 i32.const 0 - local.get $1 - call $~lib/array/Array#__uset local.get $0 + call $~lib/array/Array#__uset + local.get $2 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $0 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -2781,13 +2662,13 @@ i32.const 11 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.const 1 i32.const 2 @@ -2795,7 +2676,7 @@ i32.const 1936 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $0 + local.get $1 i32.const 1 i32.const 1 i32.const 2 @@ -2803,7 +2684,7 @@ i32.const 1968 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 16 @@ -2822,30 +2703,20 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner1 - block $folding-inner0 + block $folding-inner2 + block $folding-inner1 block $invalid block $infer-array/Ref - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner1 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $infer-array/Ref $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end return @@ -2853,42 +2724,49 @@ unreachable end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - local.tee $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.load - local.tee $0 + i32.lt_u if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end - local.get $1 + local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start call $start:infer-array @@ -2916,16 +2794,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $7 i32.const 0 i32.store - local.get $6 local.get $0 local.get $1 i32.shl - local.tee $9 - local.set $8 - local.get $9 + local.tee $8 + local.set $9 + local.get $8 i32.const 0 call $~lib/rt/itcms/__new local.set $6 @@ -2940,10 +2817,10 @@ local.get $3 local.get $1 i32.sub - local.get $8 + local.get $9 i32.sub i32.const 0 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.sub @@ -2951,7 +2828,7 @@ if local.get $1 local.get $3 - local.get $8 + local.get $9 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end @@ -2972,13 +2849,13 @@ i32.const 7 i32.and if - local.get $8 + local.get $9 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 + local.set $9 local.get $1 local.tee $4 i32.const 1 @@ -2997,7 +2874,7 @@ end end loop $while-continue|1 - local.get $8 + local.get $9 i32.const 8 i32.ge_u if @@ -3005,10 +2882,10 @@ local.get $3 i64.load i64.store - local.get $8 + local.get $9 i32.const 8 i32.sub - local.set $8 + local.set $9 local.get $1 i32.const 8 i32.add @@ -3022,7 +2899,7 @@ end end loop $while-continue|2 - local.get $8 + local.get $9 if local.get $1 local.tee $4 @@ -3038,10 +2915,10 @@ local.get $5 i32.load8_u i32.store8 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.set $8 + local.set $9 br $while-continue|2 end end @@ -3056,22 +2933,22 @@ if loop $while-continue|3 local.get $1 - local.get $8 + local.get $9 i32.add i32.const 7 i32.and if - local.get $8 + local.get $9 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.tee $8 + local.tee $9 i32.add local.get $3 - local.get $8 + local.get $9 i32.add i32.load8_u i32.store8 @@ -3079,18 +2956,18 @@ end end loop $while-continue|4 - local.get $8 + local.get $9 i32.const 8 i32.ge_u if local.get $1 - local.get $8 + local.get $9 i32.const 8 i32.sub - local.tee $8 + local.tee $9 i32.add local.get $3 - local.get $8 + local.get $9 i32.add i64.load i64.store @@ -3099,16 +2976,16 @@ end end loop $while-continue|5 - local.get $8 + local.get $9 if local.get $1 - local.get $8 + local.get $9 i32.const 1 i32.sub - local.tee $8 + local.tee $9 i32.add local.get $3 - local.get $8 + local.get $9 i32.add i32.load8_u i32.store8 @@ -3118,6 +2995,7 @@ end end end + local.get $7 local.get $6 i32.store i32.const 16 @@ -3126,15 +3004,18 @@ local.tee $1 local.get $6 i32.store - local.get $1 local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $6 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 local.get $6 i32.store offset=4 local.get $1 - local.get $9 + local.get $8 i32.store offset=8 local.get $1 local.get $0 @@ -3178,4 +3059,77 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 74adc9c662..646bef4e1a 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -1,12 +1,12 @@ (module (type $none_=>_none (func)) (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -62,11 +62,11 @@ (local $0 i32) (local $1 i32) i32.const 1152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1424 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1232 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -105,160 +105,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18068 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1616 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1424 - i32.const 1488 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1620 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -295,11 +141,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -311,28 +156,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -344,19 +186,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -381,9 +223,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -391,17 +233,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -529,7 +371,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -540,7 +382,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -560,44 +402,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -607,7 +448,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -617,20 +458,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -658,7 +499,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -685,15 +526,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -705,15 +543,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -734,6 +572,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -743,7 +584,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -780,8 +621,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -940,7 +781,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1065,7 +910,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1075,7 +920,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1088,14 +933,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1125,9 +969,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1143,13 +987,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1159,9 +1003,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1175,111 +1019,363 @@ end end ) + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 + local.get $0 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1568 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $1 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or + i32.store + local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $1 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 5 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $1 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + ) (func $infer-generic/test1 (param $0 f32) (result f32) local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $infer-generic/Ref - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $invalid - end - return + block $folding-inner1 + block $folding-inner0 + block $invalid + block $infer-generic/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner1 $folding-inner0 $infer-generic/Ref $folding-inner0 $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end - return + unreachable end - unreachable + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1684 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 - local.get $0 + local.get $2 i32.const 1152 i32.store - local.get $0 + local.get $2 i32.const 1200 i32.store offset=4 i32.const 1164 i32.load - local.set $1 + local.set $2 loop $for-loop|0 - local.get $1 + local.get $2 i32.const 1164 i32.load - local.tee $0 - local.get $0 - local.get $1 - i32.gt_s - select + local.tee $3 local.get $2 + local.get $3 + i32.lt_s + select + local.get $0 i32.gt_s if - local.get $3 + local.get $1 i32.const 1156 i32.load - local.get $2 + local.get $0 i32.const 2 i32.shl i32.add f32.load - local.get $2 + local.get $0 i32.const 1152 i32.const 1200 i32.load call_indirect $0 (type $i32_f32_i32_i32_=>_i32) - local.set $3 - local.get $2 + local.set $1 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -1316,8 +1412,8 @@ i32.const 1520 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1326,278 +1422,30 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i32.const 0 i32.store - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-loop|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-loop|0 - end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $4 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - memory.size - local.tee $1 - i32.const 4 - local.get $4 - i32.load offset=1568 - local.get $1 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $0 - local.get $1 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $4 - local.get $1 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $4 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1568 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $1 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $2 - i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.const 2 - i32.and - i32.const 28 - i32.or - i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $1 - local.get $2 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $4 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $0 - local.get $1 - i32.const -2 - i32.and - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $1 - local.get $1 - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $0 - i32.const 5 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - local.get $1 - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $1 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $1 - i32.const 0 - i32.store8 - local.get $1 - i32.const 4 - i32.add + call $~lib/rt/itcms/__new local.tee $0 - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 0 - i32.store8 offset=1 - local.get $1 - i32.const 0 - i32.store8 offset=2 - local.get $0 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $3 - local.get $1 i32.store - local.get $1 + local.get $0 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.store - local.get $3 + local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -1637,4 +1485,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18068 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1296 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1616 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1424 + i32.const 1488 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1620 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 553f6c931d..06cac7f4d7 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -51,9 +51,9 @@ (local $0 i32) (local $1 i32) i32.const 1328 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -92,160 +92,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17964 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1520 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1328 - i32.const 1392 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1524 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -282,11 +128,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -298,28 +143,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -331,19 +173,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -368,9 +210,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -378,17 +220,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -516,7 +358,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +369,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +389,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -594,7 +435,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +445,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -645,7 +486,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -672,15 +513,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -692,15 +530,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -721,6 +559,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +571,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +608,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -927,7 +768,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1052,7 +897,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1062,7 +907,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1075,14 +920,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1107,56 +951,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1257,12 +1098,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1278,14 +1119,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1296,18 +1137,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1318,54 +1158,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1373,16 +1209,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1390,15 +1226,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1426,12 +1262,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1445,7 +1281,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1455,7 +1291,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1473,12 +1309,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1508,8 +1344,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1538,19 +1374,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1559,18 +1395,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1579,10 +1415,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1591,97 +1427,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1713,7 +1549,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1739,13 +1575,17 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -1760,188 +1600,335 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block $__inlined_func$start:inlining + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1580 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 2 + i32.const 1104 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 123 + i32.store + local.get $0 i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 17964 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/pinSpace + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/toSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1580 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 2 - i32.const 1104 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 123 - i32.store - local.get $0 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 17964 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/pinSpace - i32.const 1284 - i32.const 1280 - i32.store - i32.const 1288 - i32.const 1280 - i32.store - i32.const 1280 - global.set $~lib/rt/itcms/toSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1580 - i32.lt_s - br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1580 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 16 - i32.const 5 + i32.const 8 + i32.const 6 call $~lib/rt/itcms/__new local.tee $0 - i32.store - local.get $0 + i32.store offset=4 + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 95 i32.const 3 - i32.store offset=8 - local.get $0 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 + i32.const 1056 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 + i32.const 1056 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load - i32.const 1 - i32.ne + i32.load offset=8 + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 95 - i32.const 3 + i32.const 1200 + i32.const 147 + i32.const 30 call $~lib/builtins/abort unreachable end local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 i32.load offset=4 - i32.const 2 - i32.ne + i32.const -4 + i32.and + local.tee $0 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 17964 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink end - local.get $0 + local.get $1 i32.load offset=8 - i32.const 3 - i32.ne + local.tee $2 + i32.eqz if i32.const 0 - i32.const 1056 - i32.const 97 - i32.const 3 + i32.const 1200 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1520 + i32.load + local.get $0 + i32.lt_u if - i32.const 0 - i32.const 1056 - i32.const 98 - i32.const 3 + i32.const 1328 + i32.const 1392 + i32.const 22 + i32.const 28 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.get $0 + i32.const 3 + i32.shl + i32.const 1524 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:inlining + i32.load + i32.const 32 + i32.and end - i32.const 17984 - i32.const 18032 - i32.const 1 + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/rt/itcms/visitCount end ) ) diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index 416e6b86fd..ce647effca 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -44,18 +44,18 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $instanceof-class/b local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -94,160 +94,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17948 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1504 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -284,11 +130,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -300,28 +145,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -333,19 +175,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -370,9 +212,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -380,17 +222,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -518,7 +360,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -529,7 +371,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -549,44 +391,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -596,7 +437,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -606,20 +447,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -647,7 +488,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -674,15 +515,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -694,15 +532,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -723,6 +561,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -732,7 +573,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -769,8 +610,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -929,7 +770,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1054,7 +899,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1064,7 +909,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1077,14 +922,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1114,9 +958,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1132,13 +976,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1148,9 +992,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1220,17 +1064,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1243,16 +1087,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1260,15 +1104,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1295,12 +1139,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1310,7 +1154,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1319,19 +1163,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1361,8 +1205,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1395,43 +1239,43 @@ (func $start:instanceof-class (local $0 i32) (local $1 i32) - memory.size - i32.const 16 - i32.shl - i32.const 17948 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + memory.size + i32.const 16 + i32.shl + i32.const 17948 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + 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 1564 i32.lt_s @@ -1568,7 +1412,7 @@ br_if $__inlined_func$instanceof-class/Child~instanceof drop i32.const 1 - block $__inlined_func$~lib/rt/__instanceof6 (result i32) + block $__inlined_func$~lib/rt/__instanceof9 (result i32) local.get $1 i32.const 20 i32.sub @@ -1578,12 +1422,12 @@ i32.load i32.le_u if - loop $do-loop|07 + loop $do-loop|010 i32.const 1 local.get $0 i32.const 6 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof6 + br_if $__inlined_func$~lib/rt/__instanceof9 drop local.get $0 i32.const 3 @@ -1592,7 +1436,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-loop|07 + br_if $do-loop|010 end end i32.const 0 @@ -1643,7 +1487,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1660,4 +1504,153 @@ (func $~start call $start:instanceof-class ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17948 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1504 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index d53529b195..280cf4e218 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -42,9 +42,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -111,7 +111,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -134,7 +134,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -144,15 +144,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -217,30 +217,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -277,11 +253,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -293,28 +268,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -326,19 +298,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -363,9 +335,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -373,17 +345,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -511,7 +483,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -522,7 +494,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -542,44 +514,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -589,7 +560,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -599,20 +570,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -640,7 +611,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -667,15 +638,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -687,15 +655,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -716,6 +684,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -725,7 +696,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -762,8 +733,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -922,7 +893,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1047,7 +1022,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1057,7 +1032,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1070,14 +1045,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1107,9 +1081,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1125,13 +1099,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1141,9 +1115,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1157,463 +1131,514 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz + (func $~lib/rt/itcms/__new (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - return + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-loop|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $0 + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz if + memory.size + local.tee $0 + i32.const 4 + local.get $2 + i32.load offset=1568 local.get $0 - i32.const 20 + i32.const 16 + i32.shl + i32.const 4 i32.sub - i32.load offset=4 - i32.const 3 + i32.ne + i32.shl + i32.const 65563 + i32.add + i32.const -65536 i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq + i32.const 16 + i32.shr_u + local.tee $1 + local.get $0 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq + memory.grow i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select + i32.lt_s if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + unreachable end end - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $invalid - end - return - end - return + local.get $2 + local.get $0 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable end - unreachable end local.get $0 i32.load - local.tee $0 + i32.const -4 + i32.and + i32.const 28 + i32.lt_u if - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable end - ) - (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $2 + local.get $0 + call $~lib/rt/tlsf/removeBlock + local.get $0 + i32.load + local.tee $3 + i32.const -4 + i32.and + i32.const 28 i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 + local.tee $1 + i32.const 16 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.const 28 + i32.or i32.store - memory.size - i32.const 16 - i32.shl - i32.const 18004 + local.get $0 + i32.const 32 + i32.add + local.tee $3 + local.get $1 + i32.const 4 i32.sub i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1172 - i32.const 1168 - i32.store - i32.const 1176 - i32.const 1168 - i32.store - i32.const 1168 - global.set $~lib/rt/itcms/pinSpace - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/toSpace - i32.const 1348 - i32.const 1344 + i32.or i32.store - i32.const 1352 - i32.const 1344 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $0 + local.get $3 + i32.const -2 + i32.and i32.store - i32.const 1344 - global.set $~lib/rt/itcms/fromSpace local.get $0 i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store + i32.add local.get $0 - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $0 - loop $do-loop|0 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $2 + local.get $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $1 + i32.const 2 + i32.sub + i32.const 0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub + i32.const 0 + i32.store8 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - call $~lib/rt/itcms/step + i32.const 8 i32.sub - local.set $0 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $0 - i32.const 0 - i32.gt_s - br_if $do-loop|0 + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $invalid end - global.get $~lib/rt/itcms/total - local.tee $0 - local.get $0 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold + return end + return end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - call $~lib/rt/tlsf/searchBlock - local.tee $0 - i32.eqz - if - memory.size - local.tee $0 + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + ) + (func $~start + (local $0 i32) + (local $1 i32) + block $folding-inner1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer i32.const 4 - local.get $2 - i32.load offset=1568 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + memory.size i32.const 16 i32.shl - i32.const 4 + i32.const 18004 i32.sub - i32.ne - i32.shl - i32.const 65563 - i32.add - i32.const -65536 - i32.and - i32.const 16 + i32.const 1 i32.shr_u - local.tee $3 + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace local.get $0 - local.get $3 - i32.gt_s - select - memory.grow - i32.const 0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store local.get $0 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - call $~lib/rt/tlsf/searchBlock + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 + i32.const 1456 + i32.store + local.get $0 i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + i32.const 1440 + i32.load + i32.const 3 + i32.and + i32.eq if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + i32.const 1436 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + i32.const 1436 + call $~lib/rt/itcms/Object#makeGray + end + end end - end - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 28 - i32.lt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/removeBlock - local.get $0 - i32.load - local.tee $3 - i32.const -4 - i32.and - i32.const 28 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 - local.get $3 - i32.const 2 - i32.and - i32.const 28 - i32.or i32.store - local.get $0 - i32.const 32 - i32.add - local.tee $3 - local.get $4 + local.get $1 i32.const 4 i32.sub - i32.const 1 - i32.or + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else + local.get $1 local.get $0 - local.get $3 - i32.const -2 - i32.and + i32.load + local.tee $1 i32.store + local.get $1 + i32.eqz + if + i32.const 1488 + i32.const 1552 + i32.const 8 + i32.const 13 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + br_if $folding-inner1 + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.get $0 - i32.load - i32.const -4 - i32.and + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $2 - local.get $2 - i32.load - i32.const -3 - i32.and - i32.store + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $2 - local.get $0 - global.get $~lib/rt/itcms/white - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $3 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $0 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $0 - i32.const 20 - i32.add - local.tee $0 - i32.const 0 - i32.store8 - local.get $0 - i32.const 4 - i32.add - local.tee $2 + i32.const 18032 + i32.const 18080 i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.const 0 - i32.store8 offset=1 - local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $0 - i32.store - local.get $0 - i32.const 1456 - i32.store - local.get $0 - i32.const 1456 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1620 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - local.get $0 - i32.load - local.tee $1 - i32.store - local.get $1 - i32.eqz - if - i32.const 1488 - i32.const 1552 - i32.const 8 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 18032 - i32.const 18080 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index efd7f853c4..cb2cba41e8 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -45,12 +45,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -89,160 +89,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -279,11 +125,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -295,28 +140,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -328,19 +170,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -365,9 +207,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -375,17 +217,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -513,7 +355,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -524,7 +366,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -544,44 +386,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -591,7 +432,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -601,20 +442,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -642,7 +483,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -669,15 +510,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -689,15 +527,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -718,6 +556,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -727,7 +568,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -764,8 +605,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -924,7 +765,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1049,7 +894,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1059,7 +904,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1072,14 +917,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1109,9 +953,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1127,13 +971,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1143,9 +987,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1164,18 +1008,19 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $1 + local.set $0 loop $do-loop|0 - local.get $1 + local.get $0 call $~lib/rt/itcms/step i32.sub - local.set $1 + local.set $0 global.get $~lib/rt/itcms/state i32.eqz if @@ -1191,7 +1036,7 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $1 + local.get $0 i32.const 0 i32.gt_s br_if $do-loop|0 @@ -1221,11 +1066,11 @@ i32.eqz if memory.size - local.tee $3 + local.tee $0 i32.const 4 local.get $1 i32.load offset=1568 - local.get $3 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1238,16 +1083,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $3 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1256,7 +1101,7 @@ end end local.get $1 - local.get $3 + local.get $0 i32.const 16 i32.shl memory.size @@ -1295,17 +1140,17 @@ call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $3 + local.tee $2 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $2 + local.tee $3 i32.const 16 i32.ge_u if local.get $0 - local.get $3 + local.get $2 i32.const 2 i32.and i32.const 28 @@ -1314,19 +1159,19 @@ local.get $0 i32.const 32 i32.add - local.tee $3 - local.get $2 + local.tee $2 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $1 - local.get $3 + local.get $2 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -1338,8 +1183,8 @@ i32.const -4 i32.and i32.add - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.load i32.const -3 i32.and @@ -1352,12 +1197,12 @@ i32.const 12 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 local.set $2 local.get $0 + local.get $1 global.get $~lib/rt/itcms/white - local.get $3 i32.or i32.store offset=4 local.get $0 @@ -1371,7 +1216,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1386,60 +1231,60 @@ local.get $0 i32.const 20 i32.add - local.tee $3 local.tee $2 + local.tee $0 i32.const 0 i32.store8 - local.get $2 + local.get $0 i32.const 12 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $0 i32.const 0 - local.get $2 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $0 - i32.add local.tee $1 + i32.add + local.tee $3 i32.const 0 i32.store + local.get $3 i32.const 12 - local.get $0 + local.get $1 i32.sub i32.const -4 i32.and - local.tee $2 - local.get $1 + local.tee $4 i32.add local.tee $0 i32.const 4 @@ -1447,14 +1292,14 @@ i32.const 0 i32.store block $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $4 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $3 i32.const 0 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 local.get $0 @@ -1467,20 +1312,20 @@ i32.sub i32.const 0 i32.store - local.get $2 + local.get $4 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $3 i32.const 0 i32.store offset=12 - local.get $1 + local.get $3 i32.const 0 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.store offset=20 - local.get $1 + local.get $3 i32.const 0 i32.store offset=24 local.get $0 @@ -1503,8 +1348,8 @@ i32.sub i32.const 0 i32.store - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.const 4 i32.and i32.const 24 @@ -1512,7 +1357,7 @@ local.tee $0 i32.add local.set $1 - local.get $2 + local.get $4 local.get $0 i32.sub local.set $0 @@ -1545,7 +1390,7 @@ end end end - local.get $3 + local.get $2 ) (func $issues/1225/normal (result i32) global.get $issues/1225/x @@ -1576,7 +1421,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1723,4 +1568,153 @@ i32.add global.set $~lib/rt/itcms/threshold ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index 8c314a75f9..659db3d84d 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -45,13 +45,13 @@ (local $0 i32) (local $1 i32) i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1552 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -118,7 +118,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -141,7 +141,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -151,15 +151,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -224,30 +224,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -284,11 +260,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -300,28 +275,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -333,19 +305,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -370,9 +342,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -380,17 +352,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -518,7 +490,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -529,7 +501,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -549,44 +521,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -596,7 +567,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -606,20 +577,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -647,7 +618,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -674,15 +645,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -694,15 +662,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -723,6 +691,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -732,7 +703,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -769,8 +740,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -929,7 +900,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1054,7 +1029,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1064,7 +1039,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1077,14 +1052,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1109,56 +1083,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1306,14 +1277,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1323,17 +1294,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1349,22 +1320,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1375,11 +1346,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1474,10 +1445,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1485,7 +1452,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1496,54 +1466,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1551,16 +1517,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1569,7 +1535,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1577,9 +1543,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1590,11 +1556,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1605,12 +1571,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1623,89 +1589,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1713,7 +1679,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1721,66 +1687,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1794,17 +1700,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1950,19 +1856,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1977,7 +1883,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1988,10 +1894,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1999,10 +1905,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2013,7 +1919,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2043,17 +1949,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2068,7 +1974,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2079,10 +1985,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2090,10 +1996,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2104,7 +2010,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2130,17 +2036,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2155,7 +2061,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2166,10 +2072,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2177,10 +2083,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2191,7 +2097,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2228,131 +2134,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2369,59 +2253,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2438,7 +2316,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2449,11 +2327,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2467,17 +2345,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2491,6 +2369,231 @@ i32.store8 end ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $1 + local.get $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $1 + local.get $0 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.gt_u + if + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $5 + if + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $1 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + local.get $4 + ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2498,10 +2601,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $0 i32.load offset=12 local.get $1 @@ -2521,11 +2620,12 @@ local.get $1 i32.const 1 i32.add - local.tee $9 + local.tee $4 local.tee $7 local.get $0 + local.tee $3 i32.load offset=8 - local.tee $11 + local.tee $5 i32.const 2 i32.shr_u i32.gt_u @@ -2539,284 +2639,67 @@ i32.const 18 i32.const 48 call $~lib/builtins/abort - unreachable - end - block $__inlined_func$~lib/rt/itcms/__renew - local.get $11 - i32.const 1 - i32.shl - local.tee $6 - i32.const 1073741820 - local.get $6 - i32.const 1073741820 - i32.lt_u - select - local.tee $4 - local.get $7 - i32.const 8 - local.get $7 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $6 - local.get $4 - local.get $6 - i32.gt_u - select - local.tee $10 - local.tee $12 - local.get $0 - i32.load - local.tee $8 - local.tee $3 - i32.const 20 - i32.sub - local.tee $5 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $5 - local.get $12 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $12 - local.get $5 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $7 - local.set $6 - local.get $12 - local.get $5 - i32.load offset=16 - local.tee $4 - local.get $4 - local.get $12 - i32.gt_u - select - local.set $12 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $6 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $6 - i32.sub - local.get $12 - i32.sub - i32.const 0 - local.get $12 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $6 - local.get $3 - local.get $12 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - local.get $6 - i32.gt_u - if - local.get $3 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $6 - i32.const 7 - i32.and - if - local.get $12 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - local.get $6 - local.tee $5 - i32.const 1 - i32.add - local.set $6 - local.get $3 - local.tee $4 - i32.const 1 - i32.add - local.set $3 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $12 - i32.const 8 - i32.ge_u - if - local.get $6 - local.get $3 - i64.load - i64.store - local.get $12 - i32.const 8 - i32.sub - local.set $12 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $12 - if - local.get $6 - local.tee $5 - i32.const 1 - i32.add - local.set $6 - local.get $3 - local.tee $4 - i32.const 1 - i32.add - local.set $3 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $6 - local.get $12 - i32.add - i32.const 7 - i32.and - if - local.get $12 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $12 - i32.const 8 - i32.ge_u - if - local.get $6 - local.get $12 - i32.const 8 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $12 - if - local.get $6 - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $7 - local.set $3 + unreachable end local.get $3 - local.get $11 + i32.load + local.tee $6 + local.get $5 + i32.const 1 + i32.shl + local.tee $8 + i32.const 1073741820 + local.get $8 + i32.const 1073741820 + i32.lt_u + select + local.tee $8 + local.get $7 + i32.const 8 + local.get $7 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $7 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $7 + call $~lib/rt/itcms/__renew + local.tee $8 + local.get $5 i32.add - local.get $10 - local.get $11 + local.get $7 + local.get $5 i32.sub call $~lib/memory/memory.fill - local.get $3 + local.get $6 local.get $8 i32.ne if - local.get $0 local.get $3 + local.get $8 i32.store - local.get $0 local.get $3 + local.get $8 i32.store offset=4 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $8 + if + local.get $3 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end - local.get $0 - local.get $10 + local.get $3 + local.get $7 i32.store offset=8 end local.get $0 - local.get $9 + local.get $4 i32.store offset=12 end local.get $0 @@ -2827,15 +2710,21 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $start:issues/1699 (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) memory.size i32.const 16 i32.shl @@ -2878,13 +2767,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -2893,115 +2782,155 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 + local.get $3 i32.const 0 i32.store - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $3 i32.const 0 i32.store offset=4 - local.get $0 + local.get $3 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 32 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 32 call $~lib/memory/memory.fill - local.get $0 - local.get $2 + local.get $3 + local.get $4 i32.store - local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 + local.get $4 + if + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $4 + i32.const 20 + i32.sub + local.tee $5 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $3 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $1 + i32.const 3 + i32.eq + i32.and + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $3 + local.get $4 i32.store offset=4 - local.get $0 + local.get $3 i32.const 32 i32.store offset=8 - local.get $0 + local.get $3 i32.const 3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 + local.get $2 + local.get $3 i32.store call $issues/1699/MultiAssignmentTest#constructor local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $0 + local.get $3 i32.const 1 local.get $1 call $~lib/array/Array#__set - local.get $0 + local.get $3 i32.const 1 call $~lib/array/Array#__get local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $0 + local.get $3 i32.const 0 local.get $1 call $~lib/array/Array#__set - i32.const 0 - local.set $1 loop $for-loop|0 - local.get $0 + local.get $3 i32.load offset=12 - local.get $1 + local.get $0 i32.gt_s if global.get $~lib/memory/__stack_pointer call $issues/1699/MultiAssignmentTest#constructor - local.tee $2 + local.tee $1 i32.store offset=12 - local.get $1 + local.get $0 i32.const 1 i32.gt_s if + local.get $3 local.get $0 local.get $1 - local.get $2 call $~lib/array/Array#__set end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 + local.get $3 i32.const 0 call $~lib/array/Array#__get - local.get $0 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.ne @@ -3013,10 +2942,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/array/Array#__get - local.get $0 + local.get $3 i32.const 1 call $~lib/array/Array#__get i32.eq @@ -3066,44 +2995,47 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end return end local.get $0 - local.tee $1 i32.load offset=4 - local.tee $2 + local.tee $1 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add - local.set $3 + local.set $2 loop $while-continue|0 + local.get $1 local.get $2 - local.get $3 i32.lt_u if - local.get $2 + local.get $1 i32.load - local.tee $0 + local.tee $3 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end - local.get $1 + local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -3204,4 +3136,77 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 4746759e4f..ccb97ded3c 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1100,9 +944,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1118,13 +962,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1134,9 +978,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1171,7 +1015,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1323,7 +1167,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1377,17 +1221,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1400,16 +1244,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1417,15 +1261,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1452,22 +1296,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1476,19 +1320,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1500,8 +1344,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1514,12 +1358,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1533,7 +1377,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1545,16 +1389,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) ) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index df5214e620..86b6f8db31 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -35,13 +35,17 @@ else local.get $0 i32.const 2 - i32.ne - br_if $while-continue|0 - i32.const 1104 - i32.const 1056 - i32.const 24 - i32.const 22 - call $~lib/builtins/abort + i32.eq + if + i32.const 1104 + i32.const 1056 + i32.const 24 + i32.const 22 + call $~lib/builtins/abort + unreachable + else + br $while-continue|0 + end unreachable end end diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 54ba89cd8c..9c90698515 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -43,9 +43,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -84,160 +84,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18060 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1632 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1636 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -274,11 +120,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -290,28 +135,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -323,19 +165,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -360,9 +202,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -370,17 +212,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -508,7 +350,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -519,7 +361,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -539,44 +381,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -586,7 +427,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -596,20 +437,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -637,7 +478,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -664,15 +505,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -684,15 +522,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -713,6 +551,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -722,7 +563,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -759,8 +600,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -919,7 +760,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1044,7 +889,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1054,7 +899,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1067,14 +912,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1104,9 +948,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1122,13 +966,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1138,9 +982,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1210,17 +1054,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1233,16 +1077,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1250,15 +1094,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1285,12 +1129,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1300,7 +1144,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1309,19 +1153,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1351,8 +1195,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1404,7 +1248,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1418,11 +1262,11 @@ (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1676 i32.lt_s @@ -1532,25 +1376,25 @@ i32.const 20 i32.sub i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1632 i32.load i32.le_u if loop $do-loop|0 i32.const 1 - local.get $2 + local.get $1 i32.const 3 i32.eq br_if $__inlined_func$~lib/rt/__instanceof drop - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1636 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 br_if $do-loop|0 end end @@ -1604,7 +1448,7 @@ local.get $1 local.get $0 i32.store offset=4 - block $__inlined_func$~lib/rt/__instanceof11 (result i32) + block $__inlined_func$~lib/rt/__instanceof14 (result i32) local.get $0 i32.const 20 i32.sub @@ -1614,12 +1458,12 @@ i32.load i32.le_u if - loop $do-loop|012 + loop $do-loop|015 i32.const 1 local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof11 + br_if $__inlined_func$~lib/rt/__instanceof14 drop local.get $1 i32.const 3 @@ -1628,7 +1472,7 @@ i32.add i32.load offset=4 local.tee $1 - br_if $do-loop|012 + br_if $do-loop|015 end end i32.const 0 @@ -1665,34 +1509,34 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - block $__inlined_func$~lib/rt/__instanceof14 (result i32) + block $__inlined_func$~lib/rt/__instanceof18 (result i32) local.get $0 i32.const 20 i32.sub i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1632 i32.load i32.le_u if - loop $do-loop|015 + loop $do-loop|019 i32.const 1 - local.get $2 + local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof14 + br_if $__inlined_func$~lib/rt/__instanceof18 drop - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1636 i32.add i32.load offset=4 - local.tee $2 - br_if $do-loop|015 + local.tee $1 + br_if $do-loop|019 end end i32.const 0 @@ -1706,7 +1550,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -1714,12 +1558,12 @@ i32.add global.set $~lib/memory/__stack_pointer call $managed-cast/Cat#constructor - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1728,36 +1572,36 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $0 if - block $__inlined_func$~lib/rt/__instanceof17 (result i32) - local.get $1 + block $__inlined_func$~lib/rt/__instanceof22 (result i32) + local.get $0 i32.const 20 i32.sub i32.load offset=12 - local.tee $2 + local.tee $1 i32.const 1632 i32.load i32.le_u if - loop $do-loop|018 + loop $do-loop|023 i32.const 1 - local.get $2 + local.get $1 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof17 + br_if $__inlined_func$~lib/rt/__instanceof22 drop - local.get $2 + local.get $1 i32.const 3 i32.shl i32.const 1636 i32.add i32.load offset=4 - local.tee $2 - br_if $do-loop|018 + local.tee $1 + br_if $do-loop|023 end end i32.const 0 @@ -1773,10 +1617,10 @@ end else i32.const 0 - local.set $1 + local.set $0 end + local.get $2 local.get $0 - local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -1832,12 +1676,11 @@ ) (func $managed-cast/Cat#constructor (result i32) (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1676 i32.lt_s @@ -1892,4 +1735,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18060 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1632 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index d58e24195f..1aaa9b9d51 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -26,17 +26,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -183,19 +183,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -210,7 +210,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $6 @@ -221,10 +221,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -232,10 +232,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -246,7 +246,7 @@ local.tee $6 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -276,17 +276,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -301,7 +301,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $6 @@ -312,10 +312,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -323,10 +323,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -337,7 +337,7 @@ local.tee $6 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -363,17 +363,17 @@ i32.load local.set $6 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -388,7 +388,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $6 @@ -399,10 +399,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -410,10 +410,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -424,7 +424,7 @@ local.tee $6 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -461,131 +461,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -602,59 +580,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -671,7 +643,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -682,11 +654,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -700,17 +672,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 21ae653cfb..decfd1403c 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -14,80 +14,41 @@ (local $4 i32) (local $5 i32) local.get $0 - block $folding-inner0 - local.get $0 + local.set $5 + local.get $0 + local.get $1 + i32.eq + if + local.get $5 + return + end + local.get $0 + local.get $1 + i32.lt_u + if local.get $1 - i32.eq - br_if $folding-inner0 + i32.const 7 + i32.and local.get $0 - local.get $1 - i32.lt_u + i32.const 7 + i32.and + i32.eq if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if local.get $2 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 + local.get $5 + return end - end - end - loop $while-continue|2 - local.get $2 - if + local.get $2 + i32.const 1 + i32.sub + local.set $2 local.get $0 local.tee $3 i32.const 1 @@ -102,85 +63,133 @@ local.get $4 i32.load8_u i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store local.get $2 - i32.const 1 + i32.const 8 i32.sub local.set $2 - br $while-continue|2 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 end end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq + end + loop $while-continue|2 + local.get $2 if - loop $while-continue|3 - local.get $0 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if local.get $2 - i32.add - i32.const 7 - i32.and + i32.eqz if - local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 + local.get $5 + return end - end - loop $while-continue|4 + local.get $0 local.get $2 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 8 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - br $while-continue|4 - end + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end end - loop $while-continue|5 + loop $while-continue|4 local.get $2 + i32.const 8 + i32.ge_u if local.get $0 local.get $2 - i32.const 1 + i32.const 8 i32.sub local.tee $2 i32.add local.get $1 local.get $2 i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + i64.load + i64.store + br $while-continue|4 end end end + loop $while-continue|5 + local.get $2 + if + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end + local.get $5 ) (func $~start i32.const 8 diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index e439105230..d6cd1e275c 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -1,7 +1,7 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memset/dest (mut i32) (i32.const 0)) (memory $0 1) @@ -9,14 +9,95 @@ (data (i32.const 1048) "\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") (export "memory" (memory $0)) (start $~start) - (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - local.get $2 - i32.eqz + (func $~start + i32.const 17468 + global.set $memset/dest + i32.const 17468 + i32.const 1 + i32.const 16 + call $byn-split-outlined-A$memset/memset + global.get $memset/dest + i32.load8_u + i32.const 1 + i32.ne if - return + i32.const 0 + i32.const 1056 + i32.const 72 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=15 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 73 + i32.const 1 + call $~lib/builtins/abort + unreachable end + global.get $memset/dest + i32.const 1 + i32.add + i32.const 2 + i32.const 14 + call $byn-split-outlined-A$memset/memset + global.get $memset/dest + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=1 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 78 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=14 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $memset/dest + i32.load8_u offset=15 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 80 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $byn-split-outlined-A$memset/memset (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i64) + (local $4 i32) local.get $0 local.get $1 i32.store8 @@ -42,12 +123,12 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 2 i32.sub local.get $1 i32.store8 - local.get $3 + local.get $4 i32.const 3 i32.sub local.get $1 @@ -80,7 +161,7 @@ i32.sub i32.const 3 i32.and - local.tee $3 + local.tee $4 i32.add local.tee $0 local.get $1 @@ -92,7 +173,7 @@ i32.store local.get $0 local.get $2 - local.get $3 + local.get $4 i32.sub i32.const -4 i32.and @@ -117,12 +198,12 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 12 i32.sub local.get $1 i32.store - local.get $3 + local.get $4 i32.const 8 i32.sub local.get $1 @@ -148,22 +229,22 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 28 i32.sub local.get $1 i32.store - local.get $3 + local.get $4 i32.const 24 i32.sub local.get $1 i32.store - local.get $3 + local.get $4 i32.const 20 i32.sub local.get $1 i32.store - local.get $3 + local.get $4 i32.const 16 i32.sub local.get $1 @@ -174,37 +255,37 @@ i32.and i32.const 24 i32.add - local.tee $3 + local.tee $4 i32.add local.set $0 local.get $2 - local.get $3 + local.get $4 i32.sub local.set $2 local.get $1 i64.extend_i32_u - local.tee $4 + local.tee $3 i64.const 32 i64.shl - local.get $4 + local.get $3 i64.or - local.set $4 + local.set $3 loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u if local.get $0 - local.get $4 + local.get $3 i64.store local.get $0 - local.get $4 + local.get $3 i64.store offset=8 local.get $0 - local.get $4 + local.get $3 i64.store offset=16 local.get $0 - local.get $4 + local.get $3 i64.store offset=24 local.get $2 i32.const 32 @@ -218,90 +299,4 @@ end end ) - (func $~start - i32.const 17468 - global.set $memset/dest - i32.const 17468 - i32.const 1 - i32.const 16 - call $memset/memset - global.get $memset/dest - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=15 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 73 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.const 1 - i32.add - i32.const 2 - i32.const 14 - call $memset/memset - global.get $memset/dest - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=1 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 78 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=14 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $memset/dest - i32.load8_u offset=15 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 80 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) ) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index 34913dc47e..bc6f9e6232 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -2,8 +2,8 @@ (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -46,42 +46,42 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/gen local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/ref2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/genext local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/genext2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $new/genext3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -120,160 +120,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17884 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -310,11 +156,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -326,28 +171,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -359,19 +201,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -396,9 +238,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -406,17 +248,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -544,7 +386,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -555,7 +397,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -575,44 +417,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -622,7 +463,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -632,20 +473,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -673,7 +514,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -700,15 +541,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -720,15 +558,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -749,6 +587,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -758,7 +599,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -795,8 +636,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -955,7 +796,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1080,7 +925,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1090,7 +935,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1103,14 +948,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1140,9 +984,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1158,13 +1002,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1174,9 +1018,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1246,17 +1090,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1269,16 +1113,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1286,15 +1130,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1321,12 +1165,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1336,7 +1180,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1345,19 +1189,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1387,8 +1231,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1442,7 +1286,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1690,4 +1534,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17884 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index a3546d088b..cdae122257 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) @@ -82,13 +82,13 @@ (local $0 i32) (local $1 i32) i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2080 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -127,160 +127,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 21068 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 4656 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 4660 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -317,11 +163,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -333,28 +178,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -366,19 +208,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -403,9 +245,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -413,17 +255,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -551,7 +393,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -562,7 +404,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -582,44 +424,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -629,7 +470,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -639,20 +480,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -680,7 +521,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -707,15 +548,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -727,15 +565,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -756,6 +594,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -765,7 +606,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -802,8 +643,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -962,7 +803,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1087,7 +932,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1097,7 +942,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1110,14 +955,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1142,56 +986,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1319,8 +1160,8 @@ br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1331,18 +1172,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $2 + local.tee $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1353,54 +1193,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $2 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $1 i32.const 4 - local.get $5 - i32.load offset=1568 local.get $4 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $2 + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1409,9 +1245,9 @@ i32.const 16 i32.shr_u local.tee $3 + local.get $1 local.get $3 - local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 @@ -1425,18 +1261,18 @@ unreachable end end - local.get $5 local.get $4 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if i32.const 0 @@ -1447,7 +1283,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1461,12 +1297,12 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $1 i32.load - local.set $4 + local.set $5 local.get $2 i32.const 4 i32.add @@ -1480,47 +1316,47 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const -4 i32.and local.get $2 i32.sub - local.tee $1 + local.tee $3 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const 2 i32.and local.get $2 i32.or i32.store local.get $2 - local.get $3 + local.get $1 i32.const 4 i32.add i32.add local.tee $2 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const -2 i32.and i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1532,37 +1368,37 @@ i32.and i32.store end - local.get $3 + local.get $1 i32.const 1 i32.store offset=12 - local.get $3 + local.get $1 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $2 i32.load offset=8 - local.set $1 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $1 local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $3 + local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1570,10 +1406,10 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.const 20 i32.add - local.tee $3 + local.tee $2 local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 @@ -1585,7 +1421,7 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1600,12 +1436,12 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1617,7 +1453,7 @@ local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1632,25 +1468,25 @@ i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add local.tee $1 i32.const 0 i32.store local.get $1 local.get $0 - local.get $2 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1660,17 +1496,17 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1686,22 +1522,22 @@ local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 @@ -1712,11 +1548,11 @@ i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1748,7 +1584,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1858,108 +1694,107 @@ (local $1 i32) (local $2 i32) (local $3 i32) - 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 4684 - i32.lt_s - if - i32.const 21088 - i32.const 21136 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1248 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 - end + block $__inlined_func$~lib/util/number/itoa32 (result i32) global.get $~lib/memory/__stack_pointer - i32.const 0 - local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4684 + i32.lt_s + if + i32.const 21088 + i32.const 21136 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 i32.sub local.get $0 local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -1967,8 +1802,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1996,7 +1831,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2010,32 +1845,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2052,29 +1886,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2120,8 +1954,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2344,22 +2177,20 @@ i32.shl i32.const 3454 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -2373,7 +2204,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -2389,7 +2220,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2469,22 +2300,20 @@ i32.shl i32.const 3454 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -2498,7 +2327,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -2514,7 +2343,7 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2532,17 +2361,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2688,19 +2517,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2715,7 +2544,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2726,10 +2555,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2737,10 +2566,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2751,7 +2580,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2781,17 +2610,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2806,7 +2635,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2817,10 +2646,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2828,10 +2657,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2842,7 +2671,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2868,17 +2697,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2893,7 +2722,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2904,10 +2733,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2915,10 +2744,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2929,7 +2758,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2966,131 +2795,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 - local.tee $4 + local.get $3 i32.const 2 i32.add local.set $1 + local.get $0 local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 i32.const 2 i32.add local.set $0 - local.get $1 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - i32.const 2 - i32.add - local.set $1 end local.get $2 i32.const 8 @@ -3107,59 +2914,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3176,7 +2977,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3187,11 +2988,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3205,17 +3006,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3423,8 +3224,6 @@ (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.eqz if @@ -3443,18 +3242,17 @@ local.get $0 local.get $1 i32.add - local.tee $3 + local.tee $2 i32.const 21 i32.le_s - i32.const 0 local.get $0 - local.get $3 + local.get $2 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -3471,61 +3269,59 @@ br $for-loop|0 end end - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 3456 i32.add i32.const 3145774 i32.store - local.get $3 + local.get $2 i32.const 2 i32.add else - local.get $3 + local.get $2 i32.const 21 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 3456 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.add - local.get $3 + local.get $2 i32.const 0 local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 i32.const 46 i32.store16 local.get $0 i32.const 1 i32.add else - local.get $3 + local.get $2 i32.const 0 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $3 + local.get $2 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 3456 @@ -3542,7 +3338,7 @@ local.set $1 loop $for-loop|1 local.get $1 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -3560,7 +3356,7 @@ end end local.get $0 - local.get $3 + local.get $2 i32.add else local.get $0 @@ -3570,13 +3366,14 @@ i32.const 3458 i32.const 101 i32.store16 - local.get $3 + i32.const 3460 + local.get $2 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $1 if i32.const 0 local.get $0 @@ -3584,56 +3381,52 @@ local.set $0 end local.get $0 - local.tee $1 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 - i32.const 3460 - local.get $0 - local.get $1 i32.const 1 i32.add local.tee $0 @@ -3641,7 +3434,7 @@ i32.const 3460 i32.const 45 i32.const 43 - local.get $3 + local.get $1 select i32.store16 local.get $0 @@ -3663,20 +3456,19 @@ local.get $1 i32.const 3456 i32.add - local.tee $1 + local.tee $3 i32.const 101 i32.store16 offset=2 - local.get $1 - local.tee $2 + local.get $3 i32.const 4 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.tee $1 i32.const 0 i32.lt_s - local.tee $5 + local.tee $2 if i32.const 0 local.get $1 @@ -3684,63 +3476,60 @@ local.set $1 end local.get $1 - local.tee $3 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.set $3 - local.get $1 - local.get $3 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $3 i32.const 45 i32.const 43 - local.get $5 + local.get $2 select i32.store16 offset=4 local.get $0 @@ -3773,7 +3562,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -3784,12 +3573,11 @@ ) (func $start:number (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) - (local $6 i64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3875,36 +3663,36 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $3 + local.tee $2 i64.const 4294967295 i64.and - local.tee $4 + local.tee $1 i64.const 31 i64.shl - local.tee $2 - local.set $5 - local.get $3 + local.set $3 + local.get $2 i64.const 32 i64.shr_u - local.tee $3 + local.tee $2 i64.const 31 i64.shl - local.tee $6 - local.get $4 + local.get $1 + i64.const 31 + i64.shl + local.get $1 i64.const 10 i64.shl i64.const 32 i64.shr_u - local.get $2 i64.add - local.tee $2 + local.tee $4 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $4 i64.const 4294967295 i64.and - local.get $3 + local.get $2 i64.const 10 i64.shl i64.add @@ -3915,13 +3703,15 @@ i64.add i64.const 1 i64.sub - local.set $2 - local.get $5 + local.set $4 + local.get $2 + i64.const 31 + i64.shl + local.get $3 i64.const 32 i64.shr_u - local.get $6 i64.add - local.get $5 + local.get $3 i64.const 4294967295 i64.and i64.const 2147483647 @@ -3929,31 +3719,31 @@ i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $4 global.get $~lib/util/number/_exp_pow i32.const 2 i32.add + local.get $4 local.get $2 - local.get $3 i64.const 2147483647 i64.mul - local.get $4 + local.get $1 i64.const 2147483647 i64.mul - local.get $4 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $1 i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $2 i64.const 4294966784 i64.mul - local.get $4 + local.get $1 i64.const 4294967295 i64.and i64.add @@ -3970,28 +3760,28 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 3456 - local.get $1 + local.get $0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $0 + local.get $5 i32.store - local.get $1 + local.get $0 i32.const 4448 i32.store offset=4 - local.get $0 + local.get $5 i32.const 4448 call $~lib/string/String.__eq i32.eqz @@ -4007,10 +3797,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4480 i32.store offset=4 local.get $0 @@ -4029,10 +3819,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4512 i32.store offset=4 local.get $0 @@ -4051,10 +3841,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4544 i32.store offset=4 local.get $0 @@ -4077,10 +3867,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4576 i32.store offset=4 local.get $0 @@ -4103,10 +3893,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 3232 i32.store offset=4 local.get $0 @@ -4168,10 +3958,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 3232 i32.store offset=4 local.get $0 @@ -4195,10 +3985,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 local.get $0 i32.store - local.get $1 + local.get $5 i32.const 4576 i32.store offset=4 local.get $0 @@ -4226,4 +4016,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 21068 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 4656 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 4660 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index d97952fd9d..53b247c212 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1,12 +1,11 @@ (module (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) @@ -76,7 +75,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -99,7 +98,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -109,15 +108,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -182,57 +181,57 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end + (func $object-literal/Managed#set:baz (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1104 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.store offset=4 + local.get $1 if local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 i32.const 20 i32.sub + local.tee $1 i32.load offset=4 i32.const 3 i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq - select if local.get $1 call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end end end end @@ -241,9 +240,9 @@ (local $0 i32) (local $1 i32) i32.const 1200 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1312 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -282,30 +281,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -342,11 +317,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -358,28 +332,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -391,19 +362,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -428,9 +399,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -438,17 +409,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -576,7 +547,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -587,7 +558,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -607,44 +578,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -654,7 +624,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -664,20 +634,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -705,7 +675,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -732,15 +702,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -752,15 +719,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -781,6 +748,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -790,7 +760,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -827,8 +797,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -943,18 +913,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1037,7 +1007,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1172,56 +1146,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1299,19 +1270,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1322,54 +1286,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1377,16 +1337,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1394,16 +1354,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1420,7 +1380,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1430,13 +1390,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1449,40 +1409,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1502,8 +1462,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1553,23 +1511,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -1577,26 +1539,26 @@ local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $3 + local.tee $1 i32.load offset=8 - local.set $1 + local.set $3 local.get $2 + local.get $1 global.get $~lib/rt/itcms/white - local.get $3 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and local.get $2 i32.or i32.store offset=4 - local.get $3 + local.get $1 local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1611,7 +1573,7 @@ local.get $2 i32.const 20 i32.add - local.tee $3 + local.tee $2 local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 @@ -1623,7 +1585,7 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1638,12 +1600,12 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1655,7 +1617,7 @@ local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1670,25 +1632,25 @@ i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add local.tee $1 i32.const 0 i32.store local.get $1 local.get $0 - local.get $2 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1698,17 +1660,17 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1724,22 +1686,22 @@ local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 @@ -1750,11 +1712,11 @@ i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1786,7 +1748,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1814,7 +1776,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1828,32 +1790,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1870,29 +1831,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -1917,17 +1878,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2073,19 +2034,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2100,7 +2061,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2111,10 +2072,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2122,10 +2083,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2136,7 +2097,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2166,17 +2127,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2191,7 +2152,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2202,10 +2163,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2213,10 +2174,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2227,7 +2188,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2253,17 +2214,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2278,7 +2239,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2289,10 +2250,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2300,10 +2261,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2314,7 +2275,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2351,131 +2312,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2492,59 +2431,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2561,7 +2494,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2572,11 +2505,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2590,17 +2523,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2638,7 +2571,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2649,56 +2582,56 @@ local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=4 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=8 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=12 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=16 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=20 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=24 local.tee $1 if local.get $1 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.load offset=28 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2709,37 +2642,30 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start - call $start:object-literal - ) - (func $start:object-literal (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 i32.const 1156 @@ -2774,65 +2700,59 @@ i32.store i32.const 1392 global.set $~lib/rt/itcms/fromSpace - local.get $1 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 123 i32.store - local.get $0 - i32.const 1056 - i32.store offset=4 - local.get $0 + local.get $1 i32.const 1056 - call $~lib/rt/itcms/__link + call $object-literal/Managed#set:baz global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + local.get $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $0 + local.get $1 i32.load i32.const 123 i32.ne @@ -2845,15 +2765,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.load offset=4 local.tee $0 - i32.store local.get $1 + i32.load offset=4 + local.tee $1 + i32.store + local.get $0 i32.const 1056 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -2869,312 +2789,43 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 8 - call $~lib/rt/tlsf/__alloc - local.tee $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 i32.const 0 i32.store - local.get $6 + local.get $0 i32.const 0 i32.store offset=4 - local.get $6 + local.get $0 i32.const 123 i32.store global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 1056 i32.store local.get $0 - i32.const 4 + call $~lib/string/String#substring + i32.store offset=4 + 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 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - local.tee $3 - local.get $3 - select - local.tee $1 - i32.const 5 - local.get $3 - local.get $3 - i32.const 5 - i32.gt_u - select - local.tee $0 + i64.const 0 + i64.store local.get $0 - local.get $1 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $2 - block $__inlined_func$~lib/string/String#substring - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - i32.sub - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1568 - local.set $5 - br $__inlined_func$~lib/string/String#substring - end - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - local.get $1 - i32.eq - local.get $2 - select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1056 - local.set $5 - br $__inlined_func$~lib/string/String#substring - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $0 - local.set $4 - block $~lib/util/memory/memmove|inlined.0 - local.get $5 - local.tee $0 - local.get $2 - i32.const 1056 - i32.add - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $6 - local.get $5 - i32.store offset=4 - 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 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $6 i32.load i32.const 123 i32.ne @@ -3188,14 +2839,14 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.store local.get $1 i32.const 1600 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1600 call $~lib/string/String.__eq i32.eqz @@ -3207,7 +2858,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3222,7 +2873,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3485,7 +3136,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3494,54 +3145,48 @@ i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=4 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $0 f64.const 0 f64.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=12 - local.get $2 + local.get $0 i32.const 0 i32.store - local.get $2 - i32.const 1632 - i32.store offset=4 - local.get $2 + local.get $0 i32.const 1632 - call $~lib/rt/itcms/__link - local.get $2 + call $object-literal/Managed#set:baz + local.get $0 f64.const 0 f64.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $2 + local.get $0 i32.load if i32.const 0 @@ -3553,14 +3198,14 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $2 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.store local.get $1 i32.const 1632 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1632 call $~lib/string/String.__eq i32.eqz @@ -3572,7 +3217,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 f64.load offset=8 f64.const 0 f64.ne @@ -3597,7 +3242,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3613,51 +3258,33 @@ i32.store local.get $0 i32.const 1664 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 local.get $0 i32.const 1696 i32.store offset=4 local.get $0 i32.const 1696 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 local.get $0 i32.const 0 i32.store offset=8 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=12 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=16 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=20 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=24 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=28 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=32 local.get $0 i32.const -1 @@ -3673,39 +3300,21 @@ i32.store offset=8 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=12 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=16 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=20 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=24 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=28 local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=32 global.get $~lib/memory/__stack_pointer local.get $0 @@ -3717,20 +3326,20 @@ global.get $~lib/memory/__stack_pointer i32.const 1772 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 local.get $0 i32.load - local.tee $1 + local.tee $2 i32.store - local.get $2 + local.get $1 i32.const 1664 i32.store offset=4 - local.get $1 + local.get $2 i32.const 1664 call $~lib/string/String.__eq i32.eqz @@ -3743,15 +3352,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 local.get $0 i32.load offset=4 - local.tee $1 + local.tee $2 i32.store - local.get $2 + local.get $1 i32.const 1696 i32.store offset=4 - local.get $1 + local.get $2 i32.const 1696 call $~lib/string/String.__eq i32.eqz @@ -3897,23 +3506,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|08 + loop $while-continue|0 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|08 + br $while-continue|0 end end end call $~lib/rt/itcms/step drop - loop $while-continue|19 + loop $while-continue|1 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|19 + br $while-continue|1 end end global.get $~lib/rt/itcms/total @@ -3939,4 +3548,360 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/string/String#substring (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + 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 1772 + i32.lt_s + if + i32.const 18176 + i32.const 18224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $1 + i32.const 5 + local.get $0 + local.get $0 + i32.const 5 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $2 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $3 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 + local.get $3 + i32.sub + local.tee $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1568 + return + end + i32.const 0 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.eq + local.get $3 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + return + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $0 + local.get $3 + i32.const 1056 + i32.add + local.tee $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $5 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $0 + i32.add + local.get $1 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $0 + i32.add + local.get $1 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $0 + i32.add + local.get $1 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index df70d58d8c..4568d4669d 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -42,18 +42,18 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $optional-typeparameters/tDerived local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -92,160 +92,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17868 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -282,11 +128,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -298,28 +143,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -331,19 +173,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -368,9 +210,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -378,17 +220,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -516,7 +358,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +369,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +389,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -594,7 +435,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +445,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -645,7 +486,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -672,15 +513,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -692,15 +530,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -721,6 +559,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +571,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +608,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -927,7 +768,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1052,7 +897,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1062,7 +907,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1075,14 +920,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1112,9 +956,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1130,13 +974,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1146,9 +990,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1218,17 +1062,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1241,16 +1085,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1258,15 +1102,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1293,12 +1137,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1308,7 +1152,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1317,19 +1161,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1359,8 +1203,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1412,7 +1256,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1424,11 +1268,11 @@ ) (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1484 i32.lt_s @@ -1493,9 +1337,10 @@ local.get $0 global.set $optional-typeparameters/tConcrete global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $optional-typeparameters/tConcrete i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -1519,9 +1364,10 @@ local.get $0 global.set $optional-typeparameters/tDerived global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $optional-typeparameters/tDerived i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -1534,4 +1380,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17868 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index 2b4310e1c7..3c74c1a97d 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -125,12 +125,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -169,160 +169,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17916 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -359,11 +205,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -375,28 +220,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -408,19 +250,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -445,9 +287,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -455,17 +297,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -593,7 +435,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -604,7 +446,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -624,44 +466,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -671,7 +512,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -681,20 +522,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -722,7 +563,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -749,15 +590,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -769,15 +607,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -798,6 +636,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -807,7 +648,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -844,8 +685,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1004,7 +845,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1129,7 +974,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1139,7 +984,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1152,14 +997,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1189,9 +1033,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1207,13 +1051,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1223,9 +1067,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1295,17 +1139,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1318,16 +1162,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1335,15 +1179,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1370,12 +1214,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1385,7 +1229,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1394,19 +1238,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1436,8 +1280,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1466,34 +1310,34 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -1546,7 +1390,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1799,11 +1643,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1532 i32.lt_s @@ -1866,4 +1710,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17916 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 4c61049979..f96cd48ccd 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -75,23 +75,23 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rereexport/exportsNamespaceCar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $reexport/car local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -131,160 +131,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17956 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1536 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1540 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -321,11 +167,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -337,28 +182,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -370,19 +212,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -407,9 +249,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -417,17 +259,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -555,7 +397,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -566,7 +408,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -586,44 +428,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -633,7 +474,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -643,20 +484,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -684,7 +525,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -711,15 +552,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -731,15 +569,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -760,6 +598,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -769,7 +610,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -806,8 +647,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -966,7 +807,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1091,7 +936,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1101,7 +946,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1114,14 +959,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1151,9 +995,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1169,13 +1013,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1185,9 +1029,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1230,7 +1074,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1240,11 +1084,11 @@ ) (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1572 i32.lt_s @@ -1389,7 +1233,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1443,17 +1287,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1466,16 +1310,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1483,15 +1327,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1518,22 +1362,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1542,19 +1386,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1566,8 +1410,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1580,12 +1424,12 @@ i32.const 4 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1599,7 +1443,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1614,46 +1458,195 @@ local.get $0 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $4 local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17956 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1536 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) ) diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 9c86007b10..6d7c35b4f4 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -56,13 +56,13 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2160 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3216 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -129,7 +129,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -152,7 +152,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -162,15 +162,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -235,30 +235,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -295,11 +271,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -311,28 +286,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -344,19 +316,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -381,9 +353,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -391,17 +363,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -529,7 +501,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -540,7 +512,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -560,44 +532,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -607,7 +578,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -617,20 +588,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -658,7 +629,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -685,15 +656,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -705,15 +673,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -734,6 +702,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -743,7 +714,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -780,8 +751,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -940,7 +911,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1065,7 +1040,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1075,7 +1050,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1088,14 +1063,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1120,56 +1094,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1270,12 +1241,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1291,14 +1262,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1309,18 +1280,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1331,71 +1301,67 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1403,15 +1369,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1439,12 +1405,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1458,7 +1424,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1468,7 +1434,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1486,12 +1452,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1521,8 +1487,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1551,19 +1517,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1572,18 +1538,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1592,10 +1558,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1604,97 +1570,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1726,7 +1692,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (local $1 i32) @@ -1737,9 +1703,9 @@ i32.const 8 local.set $5 i32.const 1056 - local.set $3 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $1 i32.const 3 i32.and i32.const 0 @@ -1751,13 +1717,13 @@ i32.const 1 i32.add local.set $0 - local.get $3 - local.tee $1 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -1778,25 +1744,25 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=8 i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=12 i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -1813,17 +1779,17 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=4 i32.store offset=4 - local.get $3 + local.get $1 i32.const 8 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 8 i32.add @@ -1834,13 +1800,13 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 4 i32.add @@ -1851,13 +1817,13 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load16_u i32.store16 - local.get $3 + local.get $1 i32.const 2 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 2 i32.add @@ -1868,7 +1834,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -1889,15 +1855,15 @@ i32.sub br_table $case0|2 $case1|2 $case2|2 $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.get $3 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 @@ -1907,15 +1873,15 @@ i32.const 1 i32.add local.set $0 - local.get $3 + local.get $1 i32.const 2 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -1928,7 +1894,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=1 local.tee $2 i32.const 8 @@ -1939,9 +1905,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=5 - local.tee $1 + local.tee $3 i32.const 8 i32.shl local.get $2 @@ -1950,18 +1916,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=9 local.tee $2 i32.const 8 i32.shl - local.get $1 + local.get $3 i32.const 24 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=13 local.tee $4 i32.const 8 @@ -1971,10 +1937,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -1988,25 +1954,25 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.tee $2 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 local.get $5 @@ -2019,7 +1985,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=2 local.tee $2 i32.const 16 @@ -2030,9 +1996,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=6 - local.tee $1 + local.tee $3 i32.const 16 i32.shl local.get $2 @@ -2041,18 +2007,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=10 local.tee $2 i32.const 16 i32.shl - local.get $1 + local.get $3 i32.const 16 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=14 local.tee $4 i32.const 16 @@ -2062,10 +2028,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2079,7 +2045,7 @@ end br $break|2 end - local.get $3 + local.get $1 i32.load local.set $4 local.get $0 @@ -2087,13 +2053,13 @@ i32.const 1 i32.add local.set $0 - local.get $3 - local.tee $1 + local.get $1 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $1 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -2106,7 +2072,7 @@ i32.ge_u if local.get $0 - local.get $3 + local.get $1 i32.load offset=3 local.tee $2 i32.const 24 @@ -2117,9 +2083,9 @@ i32.or i32.store local.get $0 - local.get $3 + local.get $1 i32.load offset=7 - local.tee $1 + local.tee $3 i32.const 24 i32.shl local.get $2 @@ -2128,18 +2094,18 @@ i32.or i32.store offset=4 local.get $0 - local.get $3 + local.get $1 i32.load offset=11 local.tee $2 i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 8 i32.shr_u i32.or i32.store offset=8 local.get $0 - local.get $3 + local.get $1 i32.load offset=15 local.tee $4 i32.const 24 @@ -2149,10 +2115,10 @@ i32.shr_u i32.or i32.store offset=12 - local.get $3 + local.get $1 i32.const 16 i32.add - local.set $3 + local.set $1 local.get $0 i32.const 16 i32.add @@ -2171,288 +2137,238 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 - local.get $1 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 end local.get $5 i32.const 8 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 - local.tee $2 + local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 4 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 - i32.const 2 - i32.add - local.set $0 - local.get $3 - local.tee $2 - i32.const 2 - i32.add - local.set $3 local.get $1 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $3 - i32.load8_u - i32.store8 - local.get $0 - local.tee $1 i32.const 2 i32.add - local.set $0 - local.get $3 + local.tee $0 + local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end local.get $5 i32.const 2 i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $1 + local.tee $2 i32.const 2 i32.add local.set $0 - local.get $3 - local.tee $2 + local.get $1 + local.tee $3 i32.const 2 i32.add - local.set $3 - local.get $1 + local.set $1 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2461,7 +2377,7 @@ i32.and if local.get $0 - local.get $3 + local.get $1 i32.load8_u i32.store8 end @@ -2575,34 +2491,33 @@ (local $2 i32) (local $3 i32) (local $4 i32) - 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 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 - local.get $0 - i64.eqz + block $__inlined_func$~lib/util/number/utoa64 (result i32) + 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 3348 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1728 - local.set $2 br $__inlined_func$~lib/util/number/utoa64 end local.get $0 @@ -2612,7 +2527,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 + local.tee $2 local.tee $1 i32.const 100000 i32.lt_u @@ -2659,16 +2574,16 @@ i32.add end end - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + local.get $1 local.get $2 local.get $3 - local.get $1 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -2722,25 +2637,25 @@ i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store loop $while-continue|0 local.get $0 i64.const 100000000 i64.ge_u if - local.get $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $3 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add local.get $0 local.get $0 @@ -2751,10 +2666,10 @@ i64.mul i64.sub i32.wrap_i64 - local.tee $3 + local.tee $4 i32.const 10000 i32.rem_u - local.tee $4 + local.tee $2 i32.const 100 i32.div_u i32.const 2 @@ -2762,7 +2677,7 @@ i32.const 1740 i32.add i64.load32_u - local.get $4 + local.get $2 i32.const 100 i32.rem_u i32.const 2 @@ -2774,15 +2689,15 @@ i64.shl i64.or i64.store - local.get $1 + local.get $3 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add - local.get $3 + local.get $4 i32.const 10000 i32.div_u local.tee $3 @@ -2808,59 +2723,46 @@ br $while-continue|0 end end - local.get $2 + local.get $1 local.get $0 i32.wrap_i64 - local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $resolve-access/Container - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if + block $folding-inner0 + block $invalid + block $resolve-access/Container + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - call $~lib/rt/itcms/__visit + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $resolve-access/Container $invalid end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end - return + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start memory.size @@ -2896,323 +2798,329 @@ i32.const 1376 global.set $~lib/rt/itcms/fromSpace ) - (func $resolve-access/arrayAccess (result i32) + (func $~lib/rt/__newArray (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $6 + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + if + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + local.set $5 + i32.const 1056 + local.set $0 + block $~lib/util/memory/memmove|inlined.0 + i32.const 8 i32.const 0 - i32.store - local.get $6 - i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + local.tee $1 + i32.const 1056 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + i32.const 1048 + local.get $1 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - i32.const 8 - local.set $7 + i32.const -16 + i32.le_u + if + local.get $1 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 i32.const 1056 - local.set $3 - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - local.tee $0 - i32.const 1056 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - i32.const 1048 - local.get $0 - i32.sub - i32.const -16 - i32.le_u - if - local.get $0 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - i32.const 1056 - i32.lt_u + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + i32.eqz if - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $3 - local.tee $1 - i32.const 1 - i32.add - local.set $3 - local.get $2 - local.get $1 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $3 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and if - local.get $0 + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 local.tee $2 i32.const 1 i32.add - local.set $0 - local.get $3 - local.tee $1 + local.set $1 + local.get $0 + local.tee $3 i32.const 1 i32.add - local.set $3 + local.set $0 local.get $2 - local.get $1 + local.get $3 i32.load8_u i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - i32.eqz - if - loop $while-continue|3 - local.get $0 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $7 - i32.const 1056 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - i32.add - local.get $7 - i32.const 1056 - i32.add - i64.load - i64.store - br $while-continue|4 - end + br $while-continue|0 end end - loop $while-continue|5 - local.get $7 + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u if + local.get $1 local.get $0 - local.get $7 - i32.const 1 + i64.load + i64.store + local.get $5 + i32.const 8 i32.sub - local.tee $7 + local.set $5 + local.get $1 + i32.const 8 i32.add - local.get $7 - i32.const 1056 + local.set $1 + local.get $0 + i32.const 8 i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + local.set $0 + br $while-continue|1 end end end + loop $while-continue|2 + local.get $5 + if + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + i32.eqz + if + loop $while-continue|3 + local.get $1 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $5 + i32.const 1056 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $5 + i32.const 1056 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $5 + i32.const 1056 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end - local.get $5 + end + local.get $4 + i32.store + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $4 + i32.store + local.get $4 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $4 - local.tee $0 - i32.store - i32.const 16 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 i32.const 3 - call $~lib/rt/itcms/__new - local.tee $3 - local.get $0 - i32.store - local.get $0 + i32.and + i32.eq if - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white local.get $0 i32.const 20 i32.sub - local.tee $2 i32.load offset=4 i32.const 3 i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz i32.eq if - local.get $3 - i32.const 20 - i32.sub - i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $2 i32.const 3 - i32.and - local.tee $1 - global.get $~lib/rt/itcms/white - i32.eqz i32.eq + i32.and if - local.get $2 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 local.get $1 - i32.const 3 - i32.eq - select - if - local.get $2 - call $~lib/rt/itcms/Object#makeGray - end + call $~lib/rt/itcms/Object#makeGray end end end - local.get $3 - local.get $0 - i32.store offset=4 - local.get $3 - i32.const 8 - i32.store offset=8 - local.get $3 - i32.const 1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - local.get $3 - i32.store - local.get $3 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - i64.load - call $~lib/number/U64#toString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 19760 - i32.const 19808 - i32.const 1 + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $resolve-access/arrayAccess (result i32) + (local $0 i32) + 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 3348 + i32.lt_s + if + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + call $~lib/rt/__newArray + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 107 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i64.load + call $~lib/number/U64#toString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $resolve-access/Container#constructor (result i32) (local $0 i32) @@ -3290,31 +3198,31 @@ (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 3348 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $resolve-access/Container#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i64.const 1 i64.store block $__inlined_func$~lib/util/number/utoa32 (result i32) - local.get $1 + local.get $0 i64.load i32.wrap_i64 - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3326,7 +3234,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3337,68 +3245,68 @@ br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $1 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + local.get $1 local.get $2 local.get $0 - local.get $1 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3413,4 +3321,23 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 77ecbd6323..5a2bd3e666 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -3,8 +3,8 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) @@ -264,7 +264,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -278,32 +278,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -320,29 +319,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -361,28 +360,28 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $resolve-binary/bar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $resolve-binary/bar2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1632 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1440 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2240 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -421,160 +420,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 27676 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 11248 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1632 - i32.const 1696 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 11252 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -611,11 +456,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -627,28 +471,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -660,19 +501,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -697,9 +538,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -707,17 +548,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -845,7 +686,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -856,7 +697,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -876,44 +717,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -923,7 +763,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -933,20 +773,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -974,7 +814,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1001,15 +841,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1021,15 +858,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1050,6 +887,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1059,7 +899,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1096,8 +936,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1256,7 +1096,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1381,7 +1225,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1391,7 +1235,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1404,14 +1248,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1436,56 +1279,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1586,12 +1426,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1607,14 +1447,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1625,18 +1465,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1647,54 +1486,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1702,16 +1537,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1719,15 +1554,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1755,12 +1590,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1774,7 +1609,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1784,7 +1619,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1802,12 +1637,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1837,8 +1672,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1867,19 +1702,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1888,18 +1723,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1908,10 +1743,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1920,97 +1755,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -2042,7 +1877,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2152,25 +1987,25 @@ (local $1 i32) (local $2 i32) (local $3 i32) - 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 11292 - i32.lt_s - if - i32.const 27696 - i32.const 27744 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 + block $__inlined_func$~lib/util/number/itoa32 (result i32) + 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 11292 + i32.lt_s + if + i32.const 27696 + i32.const 27744 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.eqz if @@ -2179,7 +2014,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1408 - local.set $0 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -2190,71 +2024,71 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -2262,8 +2096,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $0 ) (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (result i32) (local $4 i32) @@ -2523,22 +2357,20 @@ i32.shl i32.const 9758 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -2552,7 +2384,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -2568,7 +2400,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2648,22 +2480,20 @@ i32.shl i32.const 9758 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -2677,7 +2507,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -2693,7 +2523,7 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2711,17 +2541,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2867,19 +2697,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2894,7 +2724,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2905,10 +2735,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2916,10 +2746,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2930,7 +2760,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2960,17 +2790,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2985,7 +2815,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2996,10 +2826,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3007,10 +2837,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3021,7 +2851,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3047,17 +2877,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3072,7 +2902,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3083,10 +2913,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3094,10 +2924,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3108,7 +2938,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3145,131 +2975,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -3286,59 +3094,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3355,7 +3157,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3366,11 +3168,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3384,17 +3186,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3602,8 +3404,6 @@ (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.eqz if @@ -3622,18 +3422,17 @@ local.get $0 local.get $1 i32.add - local.tee $3 + local.tee $2 i32.const 21 i32.le_s - i32.const 0 local.get $0 - local.get $3 + local.get $2 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -3650,61 +3449,59 @@ br $for-loop|0 end end - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 9760 i32.add i32.const 3145774 i32.store - local.get $3 + local.get $2 i32.const 2 i32.add else - local.get $3 + local.get $2 i32.const 21 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 9760 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.add - local.get $3 + local.get $2 i32.const 0 local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 i32.const 46 i32.store16 local.get $0 i32.const 1 i32.add else - local.get $3 + local.get $2 i32.const 0 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $3 + local.get $2 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 9760 @@ -3721,7 +3518,7 @@ local.set $1 loop $for-loop|1 local.get $1 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -3739,7 +3536,7 @@ end end local.get $0 - local.get $3 + local.get $2 i32.add else local.get $0 @@ -3749,21 +3546,22 @@ i32.const 9762 i32.const 101 i32.store16 - local.get $3 + i32.const 9764 + local.get $2 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $1 if i32.const 0 - local.get $1 + local.get $0 i32.sub - local.set $1 + local.set $0 end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.const 100000 i32.lt_u if (result i32) @@ -3809,10 +3607,6 @@ i32.add end end - local.set $0 - i32.const 9764 - local.get $1 - local.get $0 i32.const 1 i32.add local.tee $0 @@ -3820,7 +3614,7 @@ i32.const 9764 i32.const 45 i32.const 43 - local.get $3 + local.get $1 select i32.store16 local.get $0 @@ -3842,20 +3636,19 @@ local.get $1 i32.const 9760 i32.add - local.tee $1 + local.tee $3 i32.const 101 i32.store16 offset=2 - local.get $1 - local.tee $2 + local.get $3 i32.const 4 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.tee $1 i32.const 0 i32.lt_s - local.tee $5 + local.tee $2 if i32.const 0 local.get $1 @@ -3863,63 +3656,60 @@ local.set $1 end local.get $1 - local.tee $3 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.set $3 - local.get $1 - local.get $3 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $3 i32.const 45 i32.const 43 - local.get $5 + local.get $2 select i32.store16 offset=4 local.get $0 @@ -3934,11 +3724,11 @@ ) (func $~lib/number/F64#toString (result i32) (local $0 i64) - (local $1 i64) - (local $2 i64) + (local $1 i32) + (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i32) + (local $4 i64) + (local $5 i64) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3966,36 +3756,36 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $0 + local.tee $3 i64.const 4294967295 i64.and - local.tee $1 + local.tee $0 i64.const 31 i64.shl - local.set $3 - local.get $0 + local.set $4 + local.get $3 i64.const 32 i64.shr_u - local.tee $0 + local.tee $3 i64.const 31 i64.shl - local.get $1 + local.get $0 i64.const 31 i64.shl - local.get $1 + local.get $0 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.tee $2 + local.tee $5 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $5 i64.const 4294967295 i64.and - local.get $0 + local.get $3 i64.const 10 i64.shl i64.add @@ -4006,15 +3796,15 @@ i64.add i64.const 1 i64.sub - local.set $2 - local.get $0 + local.set $5 + local.get $3 i64.const 31 i64.shl - local.get $3 + local.get $4 i64.const 32 i64.shr_u i64.add - local.get $3 + local.get $4 i64.const 4294967295 i64.and i64.const 2147483647 @@ -4022,31 +3812,31 @@ i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $5 global.get $~lib/util/number/_exp_pow i32.const 3 i32.add - local.get $2 - local.get $0 + local.get $5 + local.get $3 i64.const 2147483647 i64.mul - local.get $1 + local.get $0 i64.const 2147483647 i64.mul - local.get $1 + local.get $0 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $0 i64.const 32 i64.shr_u i64.add - local.get $0 + local.get $3 i64.const 4294966784 i64.mul - local.get $1 + local.get $0 i64.const 4294967295 i64.and i64.add @@ -4063,22 +3853,22 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $2 i32.store - local.get $5 + local.get $2 i32.const 9760 - local.get $4 + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -4102,7 +3892,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -4118,11 +3908,12 @@ (func $start:resolve-binary (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $2 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 11292 i32.lt_s @@ -5100,11 +4891,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 10912 @@ -5129,11 +4921,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 10944 @@ -5158,11 +4951,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 10976 @@ -5187,11 +4981,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11008 @@ -5216,11 +5011,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11040 @@ -5245,11 +5041,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11072 @@ -5274,11 +5071,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11104 @@ -5303,11 +5101,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11136 @@ -5332,11 +5131,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11168 @@ -5361,11 +5161,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11200 @@ -5390,11 +5191,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-binary/foo local.tee $1 + global.get $resolve-binary/foo + local.tee $2 i32.store offset=12 - local.get $0 local.get $1 + local.get $2 i32.store offset=16 local.get $0 i32.const 11232 @@ -5423,13 +5225,15 @@ global.set $resolve-binary/bar2 global.get $~lib/memory/__stack_pointer local.tee $0 + local.tee $1 global.get $resolve-binary/bar i32.store offset=4 - local.get $0 + local.get $1 global.get $resolve-binary/bar2 local.tee $1 + local.tee $2 i32.store offset=8 - local.get $1 + local.get $2 global.set $resolve-binary/bar local.get $0 global.get $resolve-binary/bar @@ -5503,4 +5307,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 27676 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 11248 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1632 + i32.const 1696 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 11252 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 6f78d8f528..ea597c6070 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -2,8 +2,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) @@ -97,24 +97,24 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $resolve-elementaccess/buf local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3568 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4624 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -181,7 +181,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -204,7 +204,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -214,15 +214,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -287,30 +287,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -347,11 +323,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -363,28 +338,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -396,19 +368,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -433,9 +405,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -443,17 +415,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -581,7 +553,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -592,7 +564,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -612,44 +584,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -659,7 +630,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -669,20 +640,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -710,7 +681,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -737,15 +708,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -757,15 +725,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -786,6 +754,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -795,7 +766,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -832,8 +803,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -992,7 +963,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1117,7 +1092,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1127,7 +1102,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1140,14 +1115,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1172,56 +1146,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1369,14 +1340,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1386,17 +1357,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1412,22 +1383,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1438,11 +1409,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1537,10 +1508,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1548,7 +1515,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1559,54 +1529,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1614,16 +1580,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1632,7 +1598,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1640,9 +1606,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1653,11 +1619,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1668,12 +1634,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1686,89 +1652,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1776,7 +1742,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1784,61 +1750,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 i32.load offset=8 @@ -1919,8 +1830,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2143,22 +2053,20 @@ i32.shl i32.const 1774 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -2172,7 +2080,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -2188,7 +2096,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2268,22 +2176,20 @@ i32.shl i32.const 1774 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -2297,7 +2203,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -2313,7 +2219,7 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2331,17 +2237,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2487,19 +2393,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2514,7 +2420,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2525,10 +2431,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2536,10 +2442,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2550,7 +2456,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2580,17 +2486,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2605,7 +2511,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2616,10 +2522,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2627,10 +2533,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2641,7 +2547,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2667,17 +2573,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2692,7 +2598,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2703,10 +2609,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2714,10 +2620,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2728,7 +2634,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2765,131 +2671,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2906,59 +2790,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2975,7 +2853,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2986,11 +2864,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3004,17 +2882,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3325,9 +3203,6 @@ ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -3346,18 +3221,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -3374,27 +3248,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -3416,19 +3289,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -3445,7 +3317,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -3463,7 +3335,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -3474,24 +3346,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -3537,20 +3408,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -3573,20 +3441,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -3594,63 +3461,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -3667,22 +3531,21 @@ (local $1 i64) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) - (local $15 i64) local.get $0 f64.const 0 f64.lt - local.tee $5 + local.tee $2 if (result f64) i32.const 1776 i32.const 45 @@ -3699,19 +3562,19 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $6 i32.const 1 - local.get $2 + local.get $6 select i32.const 1075 i32.sub - local.tee $9 + local.tee $7 i32.const 1 i32.sub local.get $1 i64.const 4503599627370495 i64.and - local.get $2 + local.get $6 i32.const 0 i32.ne i64.extend_i32_u @@ -3726,11 +3589,11 @@ local.tee $3 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $6 i32.sub - local.set $2 + local.set $8 local.get $3 - local.get $4 + local.get $6 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -3740,25 +3603,25 @@ i64.eq i32.const 1 i32.add - local.tee $4 + local.tee $6 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 - local.get $4 + local.get $7 + local.get $6 i32.sub - local.get $2 + local.get $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $2 + local.get $8 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $6 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -3767,9 +3630,9 @@ f64.add local.tee $0 i32.trunc_f64_s - local.tee $2 + local.tee $7 local.get $0 - local.get $2 + local.get $7 f64.convert_i32_s f64.ne i32.add @@ -3777,18 +3640,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $7 i32.const 3 i32.shl - local.tee $4 + local.tee $8 i32.sub global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 1832 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $2 + local.get $7 i32.const 1 i32.shl i32.const 2528 @@ -3806,77 +3669,77 @@ local.get $1 i64.const 32 i64.shr_u - local.tee $10 + local.tee $9 global.get $~lib/util/number/_frc_pow - local.tee $13 + local.tee $10 i64.const 4294967295 i64.and + local.tee $11 local.tee $1 - local.tee $6 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul i64.const 32 i64.shr_u i64.add - local.set $6 + local.set $4 global.get $~lib/util/number/_frc_plus - local.tee $7 + local.tee $1 i64.const 4294967295 i64.and - local.set $11 - local.get $7 + local.set $12 + local.get $1 i64.const 32 i64.shr_u - local.tee $14 - local.get $1 + local.tee $1 + local.get $11 i64.mul - local.get $1 local.get $11 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add - local.set $7 + local.set $5 global.get $~lib/util/number/_frc_minus - local.tee $8 + local.tee $13 i64.const 4294967295 i64.and - local.set $12 - local.get $8 + local.set $14 + local.get $13 i64.const 32 i64.shr_u - local.tee $15 - local.get $1 + local.tee $13 + local.get $11 i64.mul - local.get $1 - local.get $12 + local.get $11 + local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $8 - local.get $5 + local.set $11 + local.get $2 i32.const 1 i32.shl i32.const 1776 i32.add + local.get $9 local.get $10 - local.get $13 i64.const 32 i64.shr_u - local.tee $1 + local.tee $9 local.tee $10 i64.mul - local.get $6 + local.get $4 i64.const 32 i64.shr_u i64.add local.get $3 local.get $10 i64.mul - local.get $6 + local.get $4 i64.const 4294967295 i64.and i64.add @@ -3886,16 +3749,16 @@ i64.shr_u i64.add local.get $1 - local.get $14 + local.get $9 i64.mul - local.get $7 + local.get $5 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $11 + local.get $9 + local.get $12 i64.mul - local.get $7 + local.get $5 i64.const 4294967295 i64.and i64.add @@ -3906,24 +3769,24 @@ i64.add i64.const 1 i64.sub - local.tee $3 + local.tee $1 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $6 i32.add i32.const -64 i32.sub - local.get $3 local.get $1 - local.get $15 + local.get $9 + local.get $13 i64.mul - local.get $8 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $12 + local.get $9 + local.get $14 i64.mul - local.get $8 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -3933,40 +3796,40 @@ i64.shr_u i64.add i64.const 1 - i64.add - i64.sub - local.get $5 - call $~lib/util/number/genDigits - local.get $5 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $5 - i32.add - ) - (func $~lib/number/F32#toString (param $0 f32) (result i32) - (local $1 f64) - (local $2 i32) - (local $3 i32) - 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 4852 - i32.lt_s - if - i32.const 21264 - i32.const 21312 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/dtoa + i64.add + i64.sub + local.get $2 + call $~lib/util/number/genDigits + local.get $2 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $2 + i32.add + ) + (func $~lib/number/F32#toString (param $0 f32) (result i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + block $__inlined_func$~lib/util/number/dtoa (result i32) + 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 4852 + i32.lt_s + if + i32.const 21264 + i32.const 21312 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 f64.promote_f32 local.tee $1 @@ -3978,7 +3841,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1632 - local.set $2 br $__inlined_func$~lib/util/number/dtoa end local.get $1 @@ -3996,7 +3858,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1664 - local.set $2 br $__inlined_func$~lib/util/number/dtoa end global.get $~lib/memory/__stack_pointer @@ -4009,30 +3870,29 @@ f64.const 0 f64.lt select - local.set $2 br $__inlined_func$~lib/util/number/dtoa end local.get $1 call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 - i32.const 1776 local.get $3 + i32.const 1776 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 end - local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4060,7 +3920,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -4074,32 +3934,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -4116,29 +3975,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -4214,7 +4073,7 @@ local.get $0 i32.const 255 i32.and - local.tee $1 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4225,83 +4084,93 @@ br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store + local.get $0 local.get $2 local.get $1 - local.get $0 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 end ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner0 block $invalid - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -4311,7 +4180,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -4320,11 +4189,11 @@ (func $start:resolve-elementaccess (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 4852 i32.lt_s @@ -4469,22 +4338,22 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-elementaccess/arr local.tee $0 + global.get $resolve-elementaccess/arr + local.tee $1 i32.store offset=12 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 10 f32.add call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString @@ -4508,16 +4377,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-elementaccess/arr local.tee $0 + global.get $resolve-elementaccess/arr + local.tee $1 i32.store - local.get $1 local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 10 @@ -4669,22 +4538,22 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-elementaccess/buf local.tee $0 + global.get $resolve-elementaccess/buf + local.tee $1 i32.store offset=12 - local.get $1 local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 10 i32.add call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString @@ -4708,16 +4577,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-elementaccess/buf local.tee $0 + global.get $resolve-elementaccess/buf + local.tee $1 i32.store - local.get $1 local.get $0 + local.get $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 10 @@ -4755,6 +4624,8 @@ ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4788,9 +4659,6 @@ i32.store local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -4812,25 +4680,72 @@ i32.const 2 local.get $1 i32.shl - local.tee $2 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 - local.get $2 + local.get $3 + local.get $4 call $~lib/memory/memory.fill local.get $0 - local.get $1 + local.get $3 i32.store + local.get $3 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $3 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $2 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 + local.get $3 i32.store offset=4 local.get $0 - local.get $2 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -4838,4 +4753,23 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 6ebaf38a75..9b6256d256 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -75,13 +75,13 @@ (local $0 i32) (local $1 i32) i32.const 1648 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2256 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3312 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -120,160 +120,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 19844 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1520 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 3424 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1648 - i32.const 1712 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 3428 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -310,11 +156,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -326,28 +171,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -359,19 +201,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -396,9 +238,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -406,17 +248,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -544,7 +386,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -555,7 +397,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -575,44 +417,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -622,7 +463,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -632,20 +473,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -673,7 +514,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -700,15 +541,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -720,15 +558,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -749,6 +587,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -758,7 +599,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -795,8 +636,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -955,7 +796,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1080,7 +925,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1090,7 +935,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1103,14 +948,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1135,56 +979,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1312,8 +1153,8 @@ br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1324,18 +1165,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $2 + local.tee $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1346,54 +1186,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $2 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $1 i32.const 4 - local.get $5 - i32.load offset=1568 local.get $4 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $2 + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1402,9 +1238,9 @@ i32.const 16 i32.shr_u local.tee $3 + local.get $1 local.get $3 - local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 @@ -1418,18 +1254,18 @@ unreachable end end - local.get $5 local.get $4 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if i32.const 0 @@ -1440,7 +1276,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1454,12 +1290,12 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $1 i32.load - local.set $4 + local.set $5 local.get $2 i32.const 4 i32.add @@ -1473,47 +1309,47 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const -4 i32.and local.get $2 i32.sub - local.tee $1 + local.tee $3 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const 2 i32.and local.get $2 i32.or i32.store local.get $2 - local.get $3 + local.get $1 i32.const 4 i32.add i32.add local.tee $2 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const -2 i32.and i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1525,37 +1361,37 @@ i32.and i32.store end - local.get $3 + local.get $1 i32.const 1 i32.store offset=12 - local.get $3 + local.get $1 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $2 i32.load offset=8 - local.set $1 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $1 local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $3 + local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1563,10 +1399,10 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.const 20 i32.add - local.tee $3 + local.tee $2 local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 @@ -1578,7 +1414,7 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1593,12 +1429,12 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1610,7 +1446,7 @@ local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1625,25 +1461,25 @@ i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add local.tee $1 i32.const 0 i32.store local.get $1 local.get $0 - local.get $2 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1653,17 +1489,17 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1679,22 +1515,22 @@ local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 @@ -1705,11 +1541,11 @@ i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1741,7 +1577,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1764,13 +1600,17 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -1857,7 +1697,7 @@ i32.const 1200 i32.load call_indirect $0 (type $i32_=>_i32) - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1870,7 +1710,7 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/number/itoa32 - local.get $2 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -1878,62 +1718,62 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1424 - local.set $2 + local.set $0 br $__inlined_func$~lib/util/number/itoa32 end i32.const 0 - local.get $2 + local.get $0 i32.sub - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 31 i32.shr_u local.tee $3 select - local.tee $0 - local.set $2 + local.tee $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add @@ -1941,32 +1781,32 @@ end local.get $3 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.shl call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store loop $while-continue|0 - local.get $0 + local.get $1 i32.const 10000 i32.ge_u if - local.get $0 + local.get $1 i32.const 10000 i32.rem_u local.set $4 - local.get $0 + local.get $1 i32.const 10000 i32.div_u - local.set $0 - local.get $1 + local.set $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $2 + local.get $0 i32.add local.get $4 i32.const 100 @@ -1991,19 +1831,19 @@ br $while-continue|0 end end - local.get $0 + local.get $1 i32.const 100 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $2 - i32.add local.get $0 + i32.add + local.get $1 i32.const 100 i32.rem_u i32.const 2 @@ -2012,23 +1852,23 @@ i32.add i32.load i32.store - local.get $0 + local.get $1 i32.const 100 i32.div_u - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 10 i32.ge_u if - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $2 - i32.add local.get $0 + i32.add + local.get $1 i32.const 2 i32.shl i32.const 1836 @@ -2036,21 +1876,21 @@ i32.load i32.store else - local.get $1 + local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $2 - i32.add local.get $0 + i32.add + local.get $1 i32.const 48 i32.add i32.store16 end local.get $3 if - local.get $2 + local.get $0 i32.const 45 i32.store16 end @@ -2060,32 +1900,32 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 3408 i32.store offset=4 block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 1 - local.get $2 + local.get $0 i32.const 3408 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $2 + local.get $0 i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $0 + local.tee $2 i32.const 3404 i32.load i32.const 1 @@ -2096,27 +1936,28 @@ block $__inlined_func$~lib/util/string/compareImpl (result i32) i32.const 3408 local.set $3 - local.get $2 + local.get $0 + local.tee $1 i32.const 7 i32.and - i32.const 1 - local.get $0 + i32.eqz + local.get $2 + local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $2 + local.get $1 i64.load local.get $3 i64.load i64.eq if - local.get $2 + local.get $1 i32.const 8 i32.add - local.set $2 + local.set $1 local.get $3 i32.const 8 i32.add @@ -2133,29 +1974,29 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 + local.get $1 i32.load16_u - local.tee $1 + local.tee $2 local.get $3 i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 + local.get $1 i32.const 2 i32.add - local.set $2 + local.set $1 local.get $3 i32.const 2 i32.add @@ -2189,4 +2030,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 19844 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 3424 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1648 + i32.const 1712 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 3428 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index 9bcbc08a53..fe058cc0aa 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) @@ -48,9 +48,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -89,160 +89,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17876 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -279,11 +125,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -295,28 +140,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -328,19 +170,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -365,9 +207,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -375,17 +217,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -513,7 +355,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -524,7 +366,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -544,44 +386,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -591,7 +432,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -601,20 +442,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -642,7 +483,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -669,15 +510,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -689,15 +527,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -718,6 +556,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -727,7 +568,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -764,8 +605,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -924,7 +765,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1049,7 +894,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1059,7 +904,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1072,14 +917,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1109,9 +953,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1127,13 +971,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1143,9 +987,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1215,17 +1059,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1238,16 +1082,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1255,15 +1099,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1290,12 +1134,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1305,7 +1149,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1314,19 +1158,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1356,8 +1200,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1410,7 +1254,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1458,11 +1302,11 @@ ) (func $export:resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1492 i32.lt_s @@ -1511,11 +1355,11 @@ ) (func $export:resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1492 i32.lt_s @@ -1673,4 +1517,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17876 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index f3c97f501e..8cc979a005 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -41,12 +41,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -85,160 +85,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17860 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -275,11 +121,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -291,28 +136,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -324,19 +166,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -361,9 +203,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -371,17 +213,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -509,7 +351,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -520,7 +362,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -540,44 +382,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -587,7 +428,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -597,20 +438,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -638,7 +479,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -665,15 +506,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -685,15 +523,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -714,6 +552,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -723,7 +564,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -760,8 +601,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -920,7 +761,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1045,7 +890,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1055,7 +900,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1068,14 +913,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1105,9 +949,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1123,13 +967,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1139,9 +983,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1176,7 +1020,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1270,7 +1114,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1324,17 +1168,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1347,16 +1191,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1364,15 +1208,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1399,22 +1243,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1423,19 +1267,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1447,8 +1291,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1461,12 +1305,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1480,7 +1324,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1492,16 +1336,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17860 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) ) diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 23f5f2986e..d6680565ff 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -75,13 +75,13 @@ (local $0 i32) (local $1 i32) i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2080 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -120,160 +120,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 20100 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 3680 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 3684 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -310,11 +156,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -326,28 +171,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -359,19 +201,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -396,9 +238,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -406,17 +248,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -544,7 +386,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -555,7 +397,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -575,44 +417,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -622,7 +463,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -632,20 +473,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -673,7 +514,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -700,15 +541,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -720,15 +558,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -749,6 +587,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -758,7 +599,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -795,8 +636,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -955,7 +796,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1080,7 +925,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1090,7 +935,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1103,14 +948,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1135,56 +979,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1285,12 +1126,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1306,14 +1147,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1324,18 +1165,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1346,54 +1186,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1401,16 +1237,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1418,15 +1254,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1454,12 +1290,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1473,7 +1309,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1483,7 +1319,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1501,12 +1337,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1536,8 +1372,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1566,19 +1402,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1587,18 +1423,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1607,10 +1443,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1619,97 +1455,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1741,32 +1577,32 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - 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 3716 - i32.lt_s - if - i32.const 20128 - i32.const 20176 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 + block $__inlined_func$~lib/util/number/itoa32 (result i32) + 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 3716 + i32.lt_s + if + i32.const 20128 + i32.const 20176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.eqz if @@ -1775,9 +1611,9 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1248 - local.set $1 br $__inlined_func$~lib/util/number/itoa32 end + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 i32.sub @@ -1785,12 +1621,10 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $3 + local.tee $2 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) @@ -1836,14 +1670,14 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store loop $while-continue|0 local.get $0 @@ -1853,20 +1687,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $4 + local.set $3 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $4 + i32.add + local.get $3 i32.const 100 i32.div_u i32.const 2 @@ -1874,7 +1708,7 @@ i32.const 1660 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -1893,13 +1727,13 @@ i32.const 100 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 100 @@ -1919,12 +1753,12 @@ i32.const 10 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 2 @@ -1934,21 +1768,21 @@ i32.load i32.store else - local.get $2 + local.get $1 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $3 + local.get $2 if - local.get $1 + local.get $4 i32.const 45 i32.store16 end @@ -1956,8 +1790,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1985,7 +1819,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1999,32 +1833,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2041,29 +1874,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2096,7 +1929,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2110,11 +1943,11 @@ (func $start:resolve-propertyaccess (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 3716 i32.lt_s @@ -2464,4 +2297,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 20100 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 3680 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 3684 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 456b46f485..7ae264bda3 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -3,8 +3,8 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i64_i64_i32_i64_=>_i32 (func (param i64 i64 i32 i64) (result i32))) @@ -79,13 +79,13 @@ (local $0 i32) (local $1 i32) i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2080 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -124,160 +124,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 21028 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 4608 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 4612 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -314,11 +160,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -330,28 +175,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -363,19 +205,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -400,9 +242,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -410,17 +252,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -548,7 +390,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -559,7 +401,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -579,44 +421,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -626,7 +467,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -636,20 +477,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -677,7 +518,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -704,15 +545,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -724,15 +562,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -753,6 +591,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -762,7 +603,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -799,8 +640,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -959,7 +800,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1084,7 +929,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1094,7 +939,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1107,14 +952,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1139,56 +983,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1316,8 +1157,8 @@ br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1328,18 +1169,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $2 + local.tee $4 + local.get $0 + i32.const 16 + i32.add + local.tee $2 i32.const 1073741820 i32.gt_u if @@ -1350,54 +1190,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $2 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $2 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $1 i32.const 4 - local.get $5 - i32.load offset=1568 local.get $4 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $2 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $2 + i32.add + local.get $2 + local.get $2 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1406,9 +1242,9 @@ i32.const 16 i32.shr_u local.tee $3 + local.get $1 local.get $3 - local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 @@ -1422,18 +1258,18 @@ unreachable end end - local.get $5 local.get $4 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $1 i32.eqz if i32.const 0 @@ -1444,7 +1280,7 @@ unreachable end end - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1458,12 +1294,12 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $1 i32.load - local.set $4 + local.set $5 local.get $2 i32.const 4 i32.add @@ -1477,47 +1313,47 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const -4 i32.and local.get $2 i32.sub - local.tee $1 + local.tee $3 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const 2 i32.and local.get $2 i32.or i32.store local.get $2 - local.get $3 + local.get $1 i32.const 4 i32.add i32.add local.tee $2 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $4 local.get $2 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.const -2 i32.and i32.store - local.get $3 + local.get $1 i32.const 4 i32.add - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1529,37 +1365,37 @@ i32.and i32.store end - local.get $3 + local.get $1 i32.const 1 i32.store offset=12 - local.get $3 + local.get $1 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $2 i32.load offset=8 - local.set $1 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $1 local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $1 + local.get $3 i32.store offset=8 - local.get $1 - local.get $1 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $1 i32.or i32.store offset=4 local.get $2 - local.get $3 + local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.load i32.const -4 i32.and @@ -1567,10 +1403,10 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $1 i32.const 20 i32.add - local.tee $3 + local.tee $2 local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 @@ -1582,7 +1418,7 @@ local.get $0 local.get $1 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1597,12 +1433,12 @@ local.get $1 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $2 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1614,7 +1450,7 @@ local.get $1 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1629,25 +1465,25 @@ i32.sub i32.const 3 i32.and - local.tee $2 + local.tee $3 i32.add local.tee $1 i32.const 0 i32.store local.get $1 local.get $0 - local.get $2 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1657,17 +1493,17 @@ local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1683,22 +1519,22 @@ local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 @@ -1709,11 +1545,11 @@ i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1745,7 +1581,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1877,7 +1713,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -1891,32 +1727,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -1933,29 +1768,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2001,8 +1836,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -2225,22 +2059,20 @@ i32.shl i32.const 3470 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -2254,7 +2086,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -2270,7 +2102,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2350,22 +2182,20 @@ i32.shl i32.const 3470 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -2379,7 +2209,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -2395,7 +2225,7 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -2413,17 +2243,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2569,19 +2399,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2596,7 +2426,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2607,10 +2437,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2618,10 +2448,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2632,7 +2462,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2662,17 +2492,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2687,7 +2517,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2698,10 +2528,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2709,10 +2539,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2723,7 +2553,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2749,17 +2579,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2774,7 +2604,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2785,10 +2615,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2796,10 +2626,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2810,7 +2640,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2847,131 +2677,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2988,59 +2796,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3057,7 +2859,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3068,11 +2870,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3086,17 +2888,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3304,8 +3106,6 @@ (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $1 i32.eqz if @@ -3324,18 +3124,17 @@ local.get $0 local.get $1 i32.add - local.tee $3 + local.tee $2 i32.const 21 i32.le_s - i32.const 0 local.get $0 - local.get $3 + local.get $2 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 @@ -3352,61 +3151,59 @@ br $for-loop|0 end end - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 3472 i32.add i32.const 3145774 i32.store - local.get $3 + local.get $2 i32.const 2 i32.add else - local.get $3 + local.get $2 i32.const 21 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $3 + local.get $2 i32.const 1 i32.shl i32.const 3472 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.add - local.get $3 + local.get $2 i32.const 0 local.get $1 i32.sub i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 i32.const 46 i32.store16 local.get $0 i32.const 1 i32.add else - local.get $3 + local.get $2 i32.const 0 i32.le_s - i32.const 0 - local.get $3 + local.get $2 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $3 + local.get $2 i32.sub - local.tee $3 + local.tee $2 i32.const 1 i32.shl i32.const 3472 @@ -3423,7 +3220,7 @@ local.set $1 loop $for-loop|1 local.get $1 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -3441,7 +3238,7 @@ end end local.get $0 - local.get $3 + local.get $2 i32.add else local.get $0 @@ -3451,13 +3248,14 @@ i32.const 3474 i32.const 101 i32.store16 - local.get $3 + i32.const 3476 + local.get $2 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $3 + local.tee $1 if i32.const 0 local.get $0 @@ -3465,56 +3263,52 @@ local.set $0 end local.get $0 - local.tee $1 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 - i32.const 3476 - local.get $0 - local.get $1 i32.const 1 i32.add local.tee $0 @@ -3522,7 +3316,7 @@ i32.const 3476 i32.const 45 i32.const 43 - local.get $3 + local.get $1 select i32.store16 local.get $0 @@ -3544,20 +3338,19 @@ local.get $1 i32.const 3472 i32.add - local.tee $1 + local.tee $3 i32.const 101 i32.store16 offset=2 - local.get $1 - local.tee $2 + local.get $3 i32.const 4 i32.add - local.get $3 + local.get $2 i32.const 1 i32.sub local.tee $1 i32.const 0 i32.lt_s - local.tee $5 + local.tee $2 if i32.const 0 local.get $1 @@ -3565,63 +3358,60 @@ local.set $1 end local.get $1 - local.tee $3 + local.get $1 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.set $3 - local.get $1 - local.get $3 i32.const 1 i32.add local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $2 + local.get $3 i32.const 45 i32.const 43 - local.get $5 + local.get $2 select i32.store16 offset=4 local.get $0 @@ -3675,34 +3465,37 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable ) (func $~start (local $0 i32) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 i32) (local $3 i64) (local $4 i64) (local $5 i64) - (local $6 i64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 4644 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3746,7 +3539,7 @@ global.get $~lib/memory/__stack_pointer i32.const 4644 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3765,10 +3558,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 local.get $0 i32.store - local.get $1 + local.get $2 i32.const 3232 i32.store offset=4 local.get $0 @@ -3790,7 +3583,7 @@ global.get $~lib/memory/__stack_pointer i32.const 4644 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3806,30 +3599,30 @@ local.tee $3 i64.const 4294967295 i64.and - local.tee $4 + local.tee $1 i64.const 31 i64.shl - local.tee $2 - local.set $5 + local.set $4 local.get $3 i64.const 32 i64.shr_u local.tee $3 i64.const 31 i64.shl - local.tee $6 - local.get $4 + local.get $1 + i64.const 31 + i64.shl + local.get $1 i64.const 10 i64.shl i64.const 32 i64.shr_u - local.get $2 i64.add - local.tee $2 + local.tee $5 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $5 i64.const 4294967295 i64.and local.get $3 @@ -3843,13 +3636,15 @@ i64.add i64.const 1 i64.sub - local.set $2 - local.get $5 + local.set $5 + local.get $3 + i64.const 31 + i64.shl + local.get $4 i64.const 32 i64.shr_u - local.get $6 i64.add - local.get $5 + local.get $4 i64.const 4294967295 i64.and i64.const 2147483647 @@ -3857,31 +3652,31 @@ i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $5 global.get $~lib/util/number/_exp_pow i32.const 1 i32.add - local.get $2 + local.get $5 local.get $3 i64.const 2147483647 i64.mul - local.get $4 + local.get $1 i64.const 2147483647 i64.mul - local.get $4 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $1 i64.const 32 i64.shr_u i64.add local.get $3 i64.const 4294966784 i64.mul - local.get $4 + local.get $1 i64.const 4294967295 i64.and i64.add @@ -3898,28 +3693,28 @@ call $~lib/util/number/prettify i32.const 1 i32.shl - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 3472 - local.get $1 + local.get $0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $0 + local.get $2 i32.store - local.get $1 + local.get $0 i32.const 4464 i32.store offset=4 - local.get $0 + local.get $2 i32.const 4464 call $~lib/string/String.__eq i32.eqz @@ -3986,4 +3781,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 21028 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 4608 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 4612 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 316609fa6b..894b816720 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -86,22 +86,22 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $resolve-unary/bar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2080 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -140,160 +140,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 20156 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 3728 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1472 - i32.const 1536 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 3732 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -330,11 +176,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -346,28 +191,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -379,19 +221,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -416,9 +258,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -426,17 +268,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -564,7 +406,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -575,7 +417,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -595,44 +437,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -642,7 +483,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -652,20 +493,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -693,7 +534,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -720,15 +561,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -740,15 +578,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -769,6 +607,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -778,7 +619,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -815,8 +656,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -975,7 +816,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1100,7 +945,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1110,7 +955,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1123,14 +968,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1155,56 +999,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1305,12 +1146,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1326,14 +1167,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1344,18 +1185,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1366,54 +1206,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1421,16 +1257,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1438,15 +1274,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1474,12 +1310,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1493,7 +1329,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1503,7 +1339,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1521,12 +1357,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1556,8 +1392,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1586,19 +1422,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1607,18 +1443,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1627,10 +1463,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1639,97 +1475,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1761,32 +1597,32 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/number/I32#toString (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - 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 3772 - i32.lt_s - if - i32.const 20176 - i32.const 20224 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 + block $__inlined_func$~lib/util/number/itoa32 (result i32) + 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 3772 + i32.lt_s + if + i32.const 20176 + i32.const 20224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.eqz if @@ -1795,9 +1631,9 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1248 - local.set $1 br $__inlined_func$~lib/util/number/itoa32 end + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 i32.sub @@ -1805,12 +1641,10 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $3 + local.tee $2 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) @@ -1856,14 +1690,14 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store loop $while-continue|0 local.get $0 @@ -1873,20 +1707,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $4 + local.set $3 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $4 + i32.add + local.get $3 i32.const 100 i32.div_u i32.const 2 @@ -1894,7 +1728,7 @@ i32.const 1660 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -1913,13 +1747,13 @@ i32.const 100 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 100 @@ -1939,12 +1773,12 @@ i32.const 10 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 2 @@ -1954,21 +1788,21 @@ i32.load i32.store else - local.get $2 + local.get $1 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $3 + local.get $2 if - local.get $1 + local.get $4 i32.const 45 i32.store16 end @@ -1976,8 +1810,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2005,7 +1839,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2019,32 +1853,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2061,29 +1894,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2117,7 +1950,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2133,11 +1966,12 @@ (func $start:resolve-unary (local $0 i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $2 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 3772 i32.lt_s @@ -2428,15 +2262,16 @@ local.get $0 global.set $resolve-unary/foo global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $resolve-unary/foo i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3488 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3488 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3488 i32.store offset=4 i32.const 3488 @@ -2571,16 +2406,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-unary/foo local.tee $0 + global.get $resolve-unary/foo + local.tee $1 i32.store offset=16 - local.get $0 - global.set $resolve-unary/foo local.get $1 + global.set $resolve-unary/foo local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 global.get $resolve-unary/foo i32.ne if @@ -2592,16 +2427,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $resolve-unary/foo local.tee $0 + global.get $resolve-unary/foo + local.tee $1 i32.store offset=16 - local.get $0 - global.set $resolve-unary/foo local.get $1 + global.set $resolve-unary/foo local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 global.get $resolve-unary/foo i32.ne if @@ -2637,15 +2472,16 @@ local.get $0 global.set $resolve-unary/bar global.get $~lib/memory/__stack_pointer + local.tee $0 global.get $resolve-unary/bar i32.store offset=12 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3616 i32.store offset=8 - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3616 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 3616 i32.store offset=4 i32.const 3616 @@ -2687,11 +2523,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-unary/bar local.tee $1 + global.get $resolve-unary/bar + local.tee $2 i32.store - local.get $0 local.get $1 + local.get $2 i32.store offset=12 local.get $0 i32.const 3680 @@ -2716,11 +2553,12 @@ end global.get $~lib/memory/__stack_pointer local.tee $0 - global.get $resolve-unary/bar local.tee $1 + global.get $resolve-unary/bar + local.tee $2 i32.store - local.get $0 local.get $1 + local.get $2 i32.store offset=12 local.get $0 i32.const 3712 @@ -2756,4 +2594,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 20156 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 3728 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 3732 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/return.optimized.wat b/tests/compiler/return.optimized.wat index 64eb14b70d..646c3e3cd5 100644 --- a/tests/compiler/return.optimized.wat +++ b/tests/compiler/return.optimized.wat @@ -71,6 +71,10 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store + block $__inlined_func$return/testVoidReturnFunction + local.get $0 + br_if $__inlined_func$return/testVoidReturnFunction + end local.get $1 i32.load call_indirect $0 (type $none_=>_none) diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index bebac269d6..d4af2b697a 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -42,9 +42,9 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -83,160 +83,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -273,11 +119,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -289,28 +134,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -322,19 +164,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -359,9 +201,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -369,17 +211,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -507,7 +349,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -518,7 +360,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -538,44 +380,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -585,7 +426,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -595,20 +436,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -636,7 +477,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -663,15 +504,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -683,15 +521,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -712,6 +550,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -721,7 +562,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -758,8 +599,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -918,7 +759,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1058,7 +903,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1068,7 +913,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1081,14 +926,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1118,9 +962,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1136,13 +980,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1152,9 +996,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1222,7 +1066,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1276,17 +1120,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1299,16 +1143,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1316,15 +1160,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1351,22 +1195,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1375,19 +1219,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1399,8 +1243,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1413,12 +1257,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1432,7 +1276,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1444,17 +1288,17 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 global.set $rt/finalize/expect global.get $~lib/rt/itcms/state i32.const 0 @@ -1521,7 +1365,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1538,4 +1382,153 @@ global.set $~started call $start:rt/finalize ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 0cb166024f..b76a919feb 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -49,42 +49,42 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/cat local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/blackcat local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/nullableAnimal local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/nullableCat local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $rt/instanceof/nullableBlackcat local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -123,160 +123,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17940 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1504 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1508 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -313,11 +159,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -329,28 +174,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -362,19 +204,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -399,9 +241,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -409,17 +251,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -547,7 +389,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -558,7 +400,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -578,44 +420,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -625,7 +466,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -635,20 +476,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -676,7 +517,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -703,15 +544,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -723,15 +561,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -752,6 +590,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -761,7 +602,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -798,8 +639,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -958,7 +799,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1083,7 +928,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1093,7 +938,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1106,14 +951,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1143,9 +987,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1161,13 +1005,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1177,9 +1021,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1249,17 +1093,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1272,16 +1116,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1289,15 +1133,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1324,12 +1168,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1339,7 +1183,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1348,19 +1192,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1390,8 +1234,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -2124,7 +1968,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2255,4 +2099,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17940 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1504 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index 6cffd17c15..36f878bfc5 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -46,13 +46,13 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1520 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -168,10 +168,10 @@ local.get $0 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/toSpace - local.set $2 + local.set $1 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.const 1 i32.le_u if (result i32) @@ -179,7 +179,7 @@ else i32.const 1568 i32.load - local.get $1 + local.get $2 i32.lt_u if i32.const 1248 @@ -189,7 +189,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 i32.shl i32.const 1572 @@ -205,53 +205,29 @@ i32.const 2 end local.set $3 - local.get $2 + local.get $1 i32.load offset=8 - local.set $1 + local.set $2 local.get $0 - local.get $2 + local.get $1 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and local.get $0 i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -288,11 +264,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -304,28 +279,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -337,19 +309,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -374,9 +346,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -384,17 +356,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -522,7 +494,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -533,7 +505,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -553,44 +525,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -600,7 +571,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -610,20 +581,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -651,7 +622,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -678,15 +649,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -698,15 +666,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -727,6 +695,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -736,7 +707,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -773,8 +744,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -933,7 +904,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1058,7 +1033,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1068,7 +1043,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1081,14 +1056,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1113,56 +1087,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1263,12 +1234,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1284,14 +1255,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1302,18 +1273,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1324,54 +1294,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1379,16 +1345,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1396,15 +1362,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1432,12 +1398,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1451,7 +1417,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1461,7 +1427,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1479,12 +1445,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1514,8 +1480,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1544,19 +1510,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1565,18 +1531,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1585,10 +1551,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1597,97 +1563,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1719,7 +1685,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) @@ -1783,7 +1749,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and @@ -1801,33 +1767,33 @@ i32.const 1 i32.eq if - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#makeGray else - local.get $0 + local.get $1 call $~lib/rt/itcms/Object#unlink global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $1 + local.set $2 + local.get $1 local.get $0 global.get $~lib/rt/itcms/white - local.get $2 i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 - local.get $2 local.get $0 + local.get $1 i32.store offset=8 end ) @@ -1886,7 +1852,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1926,4 +1892,23 @@ i32.const 1344 global.set $~lib/rt/itcms/fromSpace ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat index a2c0f41a79..e36f1bfcb7 100644 --- a/tests/compiler/rt/runtime-minimal-export.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -69,11 +69,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -85,28 +84,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -118,19 +114,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -155,9 +151,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -165,17 +161,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -303,7 +299,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -314,7 +310,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -334,44 +330,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -381,7 +376,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -391,20 +386,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -432,7 +427,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -459,15 +454,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -479,15 +471,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -508,6 +500,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -517,7 +512,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -554,8 +549,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -630,56 +625,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -774,10 +766,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -785,7 +773,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $3 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -796,54 +787,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -851,16 +838,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -869,7 +856,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -909,7 +896,7 @@ call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $4 + local.set $6 local.get $3 i32.const 4 i32.add @@ -923,17 +910,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if local.get $2 - local.get $4 + local.get $6 i32.const 2 i32.and local.get $3 @@ -945,7 +932,7 @@ i32.add i32.add local.tee $3 - local.get $6 + local.get $4 i32.const 4 i32.sub i32.const 1 @@ -956,7 +943,7 @@ call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $4 + local.get $6 i32.const -2 i32.and i32.store @@ -986,8 +973,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/tcms/white local.get $0 + global.get $~lib/rt/tcms/white i32.or i32.store offset=4 local.get $2 @@ -1130,7 +1117,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $0 + local.tee $1 i32.load offset=4 i32.const 3 i32.and @@ -1144,30 +1131,30 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/tcms/Object#unlink global.get $~lib/rt/tcms/fromSpace - local.tee $2 + local.tee $0 i32.load offset=8 - local.set $1 + local.set $2 + local.get $1 local.get $0 global.get $~lib/rt/tcms/white - local.get $2 i32.or i32.store offset=4 - local.get $0 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $0 + local.get $1 i32.or i32.store offset=4 - local.get $2 local.get $0 + local.get $1 i32.store offset=8 ) (func $~lib/rt/tcms/__collect @@ -1179,11 +1166,11 @@ (local $5 i32) (local $6 i32) i32.const 1056 - call $~lib/rt/tcms/__visit + call $byn-split-outlined-A$~lib/rt/tcms/__visit i32.const 1280 - call $~lib/rt/tcms/__visit + call $byn-split-outlined-A$~lib/rt/tcms/__visit i32.const 1376 - call $~lib/rt/tcms/__visit + call $byn-split-outlined-A$~lib/rt/tcms/__visit global.get $~lib/rt/tcms/pinSpace local.tee $1 i32.load offset=4 @@ -1225,14 +1212,14 @@ i32.eqz local.set $4 global.get $~lib/rt/tcms/toSpace - local.tee $5 + local.tee $3 i32.load offset=4 i32.const -4 i32.and local.set $0 loop $while-continue|1 local.get $0 - local.get $5 + local.get $3 i32.ne if local.get $0 @@ -1262,14 +1249,14 @@ end end global.get $~lib/rt/tcms/fromSpace - local.tee $3 + local.tee $5 i32.load offset=4 i32.const -4 i32.and local.set $0 loop $while-continue|2 local.get $0 - local.get $3 + local.get $5 i32.ne if global.get $~lib/rt/tcms/white @@ -1326,7 +1313,7 @@ local.get $0 i32.const 4 i32.sub - local.set $2 + local.set $6 local.get $0 i32.const 15 i32.and @@ -1336,7 +1323,7 @@ if (result i32) i32.const 1 else - local.get $2 + local.get $6 i32.load i32.const 1 i32.and @@ -1349,14 +1336,13 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.tee $0 - local.get $0 + local.get $6 + local.get $6 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $6 call $~lib/rt/tlsf/insertBlock end end @@ -1364,65 +1350,19 @@ br $while-continue|2 end end - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.store offset=4 - local.get $3 - local.get $3 - i32.store offset=8 local.get $5 - global.set $~lib/rt/tcms/fromSpace + local.get $5 + i32.store offset=8 local.get $3 + global.set $~lib/rt/tcms/fromSpace + local.get $5 global.set $~lib/rt/tcms/toSpace local.get $4 global.set $~lib/rt/tcms/white ) - (func $~lib/rt/tcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/tcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/tcms/Object#unlink - global.get $~lib/rt/tcms/toSpace - local.tee $2 - i32.load offset=8 - local.set $1 - local.get $0 - global.get $~lib/rt/tcms/white - i32.eqz - local.get $2 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - end - ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid block $~lib/arraybuffer/ArrayBufferView @@ -1443,7 +1383,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/tcms/__visit + call $byn-split-outlined-A$~lib/rt/tcms/__visit end return end @@ -1475,4 +1415,45 @@ i32.const 1424 global.set $~lib/rt/tcms/toSpace ) + (func $byn-split-outlined-A$~lib/rt/tcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + call $~lib/rt/tcms/Object#unlink + global.get $~lib/rt/tcms/toSpace + local.tee $0 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $0 + global.get $~lib/rt/tcms/white + i32.eqz + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + end + ) ) diff --git a/tests/compiler/rt/runtime-stub-export.optimized.wat b/tests/compiler/rt/runtime-stub-export.optimized.wat index d55fbb4dbe..2c7bfa46b4 100644 --- a/tests/compiler/rt/runtime-stub-export.optimized.wat +++ b/tests/compiler/rt/runtime-stub-export.optimized.wat @@ -41,7 +41,7 @@ local.get $0 i32.const 16 i32.add - local.tee $7 + local.tee $4 i32.const 1073741820 i32.gt_u if @@ -53,11 +53,11 @@ unreachable end global.get $~lib/rt/stub/offset - local.tee $5 + local.tee $3 i32.const 4 i32.add local.tee $2 - local.get $7 + local.get $4 i32.const 19 i32.add i32.const -16 @@ -68,19 +68,19 @@ i32.add local.tee $6 memory.size - local.tee $7 + local.tee $5 i32.const 16 i32.shl i32.const 15 i32.add i32.const -16 i32.and - local.tee $3 + local.tee $7 i32.gt_u if - local.get $7 + local.get $5 local.get $6 - local.get $3 + local.get $7 i32.sub i32.const 65535 i32.add @@ -88,16 +88,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $7 + local.get $5 local.get $7 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $7 memory.grow i32.const 0 i32.lt_s @@ -108,26 +108,25 @@ end local.get $6 global.set $~lib/rt/stub/offset - local.get $5 + local.get $3 local.get $4 i32.store local.get $2 - local.tee $3 i32.const 4 i32.sub - local.tee $7 + local.tee $3 i32.const 0 i32.store offset=4 - local.get $7 + local.get $3 i32.const 0 i32.store offset=8 - local.get $7 + local.get $3 local.get $1 i32.store offset=12 - local.get $7 + local.get $3 local.get $0 i32.store offset=16 - local.get $3 + local.get $2 i32.const 16 i32.add ) diff --git a/tests/compiler/scoped.optimized.wat b/tests/compiler/scoped.optimized.wat index d9bbd8322b..f232378501 100644 --- a/tests/compiler/scoped.optimized.wat +++ b/tests/compiler/scoped.optimized.wat @@ -7,8 +7,8 @@ (local $0 i32) loop $for-loop|0 local.get $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if local.get $0 i32.const 1 @@ -21,8 +21,8 @@ local.set $0 loop $for-loop|1 local.get $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if local.get $0 i32.const 1 diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index d2f990c65d..0dd19d9487 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -2,10 +2,10 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -297,38 +297,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -341,96 +341,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $3 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -442,7 +440,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -493,13 +491,13 @@ else i32.const 19 end - local.tee $4 + local.tee $0 i32.const 544106784 i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 local.get $1 if local.get $1 @@ -508,18 +506,18 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 local.get $4 + local.get $0 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $4 + local.get $0 i32.add - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.const 40 i32.store8 local.get $2 @@ -568,17 +566,17 @@ i32.add end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|0 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $2 i32.const 10 i32.rem_u @@ -592,9 +590,9 @@ br_if $do-loop|0 end local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 58 i32.store8 local.get $3 @@ -643,17 +641,17 @@ i32.add end end - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|1 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $3 i32.const 10 i32.rem_u @@ -667,7 +665,7 @@ br_if $do-loop|1 end local.get $0 - local.get $4 + local.get $1 i32.add local.tee $0 i32.const 2601 @@ -1039,11 +1037,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -1055,28 +1052,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1088,19 +1082,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1125,9 +1119,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1135,17 +1129,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1273,7 +1267,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1284,7 +1278,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1304,44 +1298,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1351,7 +1344,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1361,20 +1354,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1402,7 +1395,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1429,15 +1422,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1449,15 +1439,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1478,6 +1468,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1487,7 +1480,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1524,8 +1517,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1600,56 +1593,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 + i32.const 1 + i32.const 27 local.get $1 i32.clz i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 i32.const 7 i32.sub local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1727,19 +1717,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1750,54 +1733,50 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1805,16 +1784,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1822,16 +1801,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1848,7 +1827,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1858,13 +1837,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1877,40 +1856,40 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1930,8 +1909,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -1975,13 +1952,12 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/process/writeString (param $0 i32) (param $1 i32) @@ -2007,21 +1983,21 @@ end local.get $1 i32.load16_u offset=6 - local.tee $5 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=4 - local.tee $3 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=2 - local.tee $2 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -2039,16 +2015,16 @@ local.get $4 i32.store i32.const 1144 - local.get $2 + local.get $5 i32.const 8 i32.shl local.get $6 i32.or - local.get $3 + local.get $2 i32.const 16 i32.shl i32.or - local.get $5 + local.get $3 i32.const 24 i32.shl i32.or @@ -2073,31 +2049,28 @@ end return end - local.get $4 - local.set $3 i32.const 0 - local.set $2 + local.set $3 local.get $1 - local.tee $5 - local.tee $4 - local.get $4 + local.tee $2 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.add - local.set $1 + local.set $5 loop $while-continue|0 - local.get $1 - local.get $4 - i32.gt_u + local.get $2 + local.get $5 + i32.lt_u if - local.get $4 + local.get $2 i32.load16_u local.tee $6 i32.const 128 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 1 i32.add else @@ -2105,65 +2078,73 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $2 + local.get $3 i32.const 2 i32.add else - local.get $1 - local.get $4 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 local.get $6 i32.const 64512 i32.and i32.const 55296 i32.eq - select + local.get $5 + local.get $2 + i32.const 2 + i32.add + i32.gt_u + i32.and if - local.get $4 + local.get $2 i32.load16_u offset=2 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $2 + local.get $3 i32.const 4 i32.add - local.set $2 - local.get $4 + local.set $3 + local.get $2 i32.const 4 i32.add - local.set $4 + local.set $2 br $while-continue|0 end end - local.get $2 + local.get $3 i32.const 3 i32.add end end - local.set $2 - local.get $4 + local.set $3 + local.get $2 i32.const 2 i32.add - local.set $4 + local.set $2 br $while-continue|0 end end + local.get $3 + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 - local.tee $1 - call $~lib/rt/tlsf/__alloc - local.set $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $2 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 + local.get $1 local.get $4 + local.get $2 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $1 + local.get $3 i32.ne if i32.const 0 @@ -2174,10 +2155,10 @@ unreachable end i32.const 1136 - local.get $4 + local.get $2 i32.store i32.const 1140 - local.get $1 + local.get $3 i32.store local.get $0 i32.const 1136 @@ -2185,7 +2166,7 @@ i32.const 1144 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $4 + local.get $2 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -2207,22 +2188,22 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 5120 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5696 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4400 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6432 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 7488 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -2289,7 +2270,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2312,7 +2293,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -2322,15 +2303,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -2395,33 +2376,10 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -2504,7 +2462,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -2707,14 +2669,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2724,17 +2686,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2750,22 +2712,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -2776,11 +2738,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -2861,23 +2823,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2889,8 +2855,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2924,66 +2890,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4992 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -3236,7 +3142,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -3244,7 +3150,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -3252,51 +3158,51 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $0 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $5 + local.get $7 i32.ne if - local.get $8 + local.get $5 i32.load offset=16 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 i32.load - local.tee $7 + local.tee $8 i32.store offset=8 local.get $2 - local.get $7 + local.get $8 i32.store local.get $2 - local.get $8 + local.get $5 i64.load offset=8 i64.store offset=8 local.get $2 - local.get $7 + local.get $8 call $~lib/util/hash/HASH<~lib/string/String> local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add - local.tee $7 + local.tee $8 i32.load i32.store offset=16 - local.get $7 + local.get $8 local.get $2 i32.store local.get $2 @@ -3304,32 +3210,38 @@ i32.add local.set $2 end - local.get $8 + local.get $5 i32.const 24 i32.add - local.set $8 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -3449,25 +3361,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - 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 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 + block $__inlined_func$~lib/util/number/utoa64 (result i32) + 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 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i64.eqz if @@ -3476,7 +3388,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 6000 - local.set $2 br $__inlined_func$~lib/util/number/utoa64 end local.get $0 @@ -3486,7 +3397,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 + local.tee $2 local.tee $1 i32.const 100000 i32.lt_u @@ -3533,16 +3444,16 @@ i32.add end end - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store + local.get $1 local.get $2 local.get $3 - local.get $1 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -3596,25 +3507,25 @@ i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store loop $while-continue|0 local.get $0 i64.const 100000000 i64.ge_u if - local.get $1 + local.get $2 i32.const 4 i32.sub - local.tee $1 + local.tee $3 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add local.get $0 local.get $0 @@ -3625,10 +3536,10 @@ i64.mul i64.sub i32.wrap_i64 - local.tee $3 + local.tee $4 i32.const 10000 i32.rem_u - local.tee $4 + local.tee $2 i32.const 100 i32.div_u i32.const 2 @@ -3636,7 +3547,7 @@ i32.const 6012 i32.add i64.load32_u - local.get $4 + local.get $2 i32.const 100 i32.rem_u i32.const 2 @@ -3648,15 +3559,15 @@ i64.shl i64.or i64.store - local.get $1 + local.get $3 i32.const 4 i32.sub - local.tee $1 + local.tee $2 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add - local.get $3 + local.get $4 i32.const 10000 i32.div_u local.tee $3 @@ -3682,22 +3593,23 @@ br $while-continue|0 end end - local.get $2 + local.get $1 local.get $0 i32.wrap_i64 - local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) block $invalid block $~lib/map/Map<~lib/string/String,u64> block $~lib/arraybuffer/ArrayBufferView @@ -3718,26 +3630,30 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=16 i32.const 24 i32.mul local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 local.tee $0 i32.add - local.set $2 + local.set $1 loop $while-continue|0 local.get $0 - local.get $2 + local.get $1 i32.lt_u if local.get $0 @@ -3748,7 +3664,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end end local.get $0 i32.const 24 @@ -3757,336 +3677,222 @@ br $while-continue|0 end end - local.get $1 - call $~lib/rt/itcms/__visit + local.get $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable ) (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std-wasi/console - ) - (func $~lib/console/console.assert (param $0 i32) (param $1 i32) - 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 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if + (local $0 i32) + (local $1 i32) + block $folding-inner0 + global.get $~started + if + return + end + i32.const 1 + global.set $~started global.get $~lib/memory/__stack_pointer - i32.const 1088 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7972 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1056 i32.store - i32.const 2 - i32.const 1088 + i32.const 0 + i32.const 1056 + call $~lib/console/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4496 + i32.store + i32.const 1 + i32.const 4496 + call $~lib/console/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store offset=4 + i32.const 4528 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4576 + i32.store offset=4 + 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 7972 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4624 + i32.store + i32.const 1 + i32.const 4624 call $~lib/process/writeString - i32.const 2 - local.get $1 + i32.const 1 + i32.const 4576 call $~lib/process/writeString global.get $~lib/memory/__stack_pointer i32.const 4464 i32.store - i32.const 2 + i32.const 1 i32.const 4464 call $~lib/process/writeString - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/console/console.log (param $0 i32) - 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 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4672 + i32.store offset=4 + 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 7972 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4720 + i32.store i32.const 1 + i32.const 4720 + call $~lib/process/writeString i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store - i32.const 1 - i32.const 4464 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/map/Map<~lib/string/String,u64>#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - 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 7972 - i32.lt_s - if - i32.const 24384 - i32.const 24432 + i32.const 4672 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store i32.const 1 + i32.const 4464 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4752 + i32.store offset=4 + 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 7972 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 4800 + i32.store i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $2 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - loop $while-continue|0 - local.get $5 - if - local.get $5 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.load - local.tee $4 - i32.store - block $__inlined_func$~lib/string/String.__eq (result i32) - i32.const 1 - local.get $1 - local.tee $2 - local.get $4 - i32.eq - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $2 - i32.const 0 - local.get $4 - select - i32.eqz - br_if $__inlined_func$~lib/string/String.__eq - drop - i32.const 0 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $__inlined_func$~lib/string/String.__eq - drop - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $4 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $3 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if - loop $do-loop|0 - local.get $4 - i64.load - local.get $2 - i64.load - i64.eq - if - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-loop|0 - end - end - end - loop $while-continue|1 - local.get $0 - local.tee $3 - i32.const 1 - i32.sub - local.set $0 - local.get $3 - if - local.get $2 - i32.load16_u - local.tee $3 - local.get $4 - i32.load16_u - local.tee $7 - i32.ne - if - local.get $7 - local.get $3 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $4 - i32.const 2 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $while-continue|1 - end - end - i32.const 0 - end - i32.eqz - end - end - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - return - end - local.get $6 - i32.const -2 - i32.and - local.set $5 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - ) - (func $~lib/console/console.time (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + i32.const 4800 + call $~lib/process/writeString + i32.const 1 + i32.const 4752 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store + i32.const 1 + i32.const 4464 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4848 + i32.store offset=4 + 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 7972 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - global.get $~lib/console/timers - local.tee $1 + local.tee $0 + i32.const 0 i32.store - local.get $1 local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - if - global.get $~lib/memory/__stack_pointer - i32.const 5376 - i32.store offset=4 - i32.const 1 - i32.const 5376 - call $~lib/process/writeString - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 5440 - i32.store offset=4 - i32.const 1 - i32.const 5440 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + i32.const 4896 + i32.store + i32.const 1 + i32.const 4896 + call $~lib/process/writeString + i32.const 1 + i32.const 4848 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 + i32.const 4464 i32.store - call $~lib/process/process.hrtime - local.set $3 + i32.const 1 + i32.const 4464 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 24356 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 5044 + i32.const 5040 + i32.store + i32.const 5048 + i32.const 5040 + i32.store + i32.const 5040 + global.set $~lib/rt/itcms/pinSpace + i32.const 5076 + i32.const 5072 + i32.store + i32.const 5080 + i32.const 5072 + i32.store + i32.const 5072 + global.set $~lib/rt/itcms/toSpace + i32.const 5220 + i32.const 5216 + i32.store + i32.const 5224 + i32.const 5216 + i32.store + i32.const 5216 + global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4096,103 +3902,110 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer + local.tee $0 i32.const 0 i32.store - local.get $1 local.get $0 + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - local.tee $4 - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $2 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store + local.get $1 if - local.get $2 - local.get $3 - i64.store offset=8 - else + local.get $0 local.get $1 - i32.load offset=16 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + if + local.get $0 local.get $1 - i32.load offset=12 - i32.eq - if - local.get $1 - local.get $1 - i32.load offset=20 - local.get $1 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $1 - i32.load offset=4 - else - local.get $1 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map<~lib/string/String,u64>#rehash - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=8 - local.tee $2 - i32.store - local.get $1 - local.get $1 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 24 - i32.mul - local.get $2 - i32.add - local.tee $2 - local.get $0 - i32.store - local.get $1 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 - local.get $3 - i64.store offset=8 - local.get $1 - local.get $1 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=16 - local.get $0 - local.get $2 - i32.store + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 end + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $~lib/console/timers + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=4 + i32.const 4944 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=4 + i32.const 4944 + call $~lib/console/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=4 + i32.const 4944 + call $~lib/console/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/console/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 7728 + i32.store offset=4 + i32.const 7728 + call $~lib/console/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 7776 + i32.store offset=4 + i32.const 7776 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 7776 + i32.store offset=4 + i32.const 7776 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 7824 + i32.store offset=4 + i32.const 7824 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7856 + i32.store offset=4 + i32.const 7856 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7888 + i32.store offset=4 + i32.const 7888 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 7920 + i32.store offset=4 + i32.const 7920 + call $~lib/console/console.log global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -4206,11 +4019,9 @@ call $~lib/wasi/index/abort unreachable ) - (func $~lib/console/timeLogImpl (param $0 i32) - (local $1 i32) - (local $2 i64) + (func $~lib/console/console.assert (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4225,72 +4036,35 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 i32.const 0 - i32.store offset=8 - local.get $1 - global.get $~lib/console/timers - local.tee $1 i32.store - local.get $1 - local.get $0 local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $1 i32.eqz if - i32.const 5696 - i32.const 5760 - i32.const 105 - i32.const 17 - call $~lib/wasi/index/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 2 + i32.const 1088 + call $~lib/process/writeString + i32.const 2 + local.get $1 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store + i32.const 2 + i32.const 4464 + call $~lib/process/writeString end - local.get $1 - i64.load offset=8 - local.set $2 - call $~lib/process/process.hrtime - local.get $2 - i64.sub - i64.const 1000000 - i64.div_u - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/number/U64#toString - local.tee $1 - i32.store offset=4 - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 7584 - i32.store offset=8 - i32.const 1 - i32.const 7584 - call $~lib/process/writeString - i32.const 1 - local.get $1 - call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 7616 - i32.store offset=8 - i32.const 1 - i32.const 7616 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.timeLog (param $0 i32) - (local $1 i32) + (func $~lib/console/console.log (param $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4305,53 +4079,30 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - global.get $~lib/console/timers - local.tee $1 + i32.const 0 i32.store - local.get $1 - local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5536 - i32.store offset=4 - i32.const 1 - i32.const 5536 - call $~lib/process/writeString - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=4 - i32.const 1 - i32.const 5616 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end + i32.const 1 local.get $0 - call $~lib/console/timeLogImpl + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4464 + i32.store + i32.const 1 + i32.const 4464 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/console/console.timeEnd (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/map/Map<~lib/string/String,u64>#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4366,176 +4117,221 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - global.get $~lib/console/timers - local.tee $1 - i32.store - local.get $1 - local.get $0 - local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 5536 - i32.store offset=4 - i32.const 1 - i32.const 5536 - call $~lib/process/writeString - i32.const 1 - local.get $0 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 7648 - i32.store offset=4 - i32.const 1 - i32.const 7648 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - local.get $0 - call $~lib/console/timeLogImpl - global.get $~lib/memory/__stack_pointer - global.get $~lib/console/timers - local.tee $1 + i32.const 0 i32.store - local.get $1 local.get $0 + i32.load local.get $0 - call $~lib/util/hash/HASH<~lib/string/String> - call $~lib/map/Map<~lib/string/String,u64>#find - local.tee $0 - if - local.get $0 - local.get $0 - i32.load offset=16 - i32.const 1 - i32.or - i32.store offset=16 - local.get $1 - local.get $1 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $1 - i32.load offset=20 - local.tee $0 - local.get $0 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $1 - i32.load offset=20 - local.get $1 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else - i32.const 0 - end + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + loop $while-continue|0 + local.get $5 if - local.get $1 - local.get $2 - call $~lib/map/Map<~lib/string/String,u64>#rehash + local.get $5 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $4 + i32.store + block $__inlined_func$~lib/string/String.__eq (result i32) + i32.const 1 + local.get $4 + local.get $1 + local.tee $2 + i32.eq + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $2 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $__inlined_func$~lib/string/String.__eq + drop + i32.const 0 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $__inlined_func$~lib/string/String.__eq + drop + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $4 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + i32.eqz + local.get $0 + i32.const 4 + i32.ge_u + i32.and + if + loop $do-loop|0 + local.get $4 + i64.load + local.get $2 + i64.load + i64.eq + if + local.get $4 + i32.const 8 + i32.add + local.set $4 + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $4 + i32.load16_u + local.tee $3 + local.get $2 + i32.load16_u + local.tee $7 + i32.ne + if + local.get $3 + local.get $7 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $4 + i32.const 2 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 + end + end + i32.const 0 + end + i32.eqz + end + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $6 + i32.const -2 + i32.and + local.set $5 + br $while-continue|0 end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $start:std-wasi/console - (local $0 i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + (func $~lib/console/console.time (param $0 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) block $folding-inner0 + 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 7972 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 - i32.const 1056 - i32.store - i32.const 0 - i32.const 1056 - call $~lib/console/console.assert - global.get $~lib/memory/__stack_pointer - i32.const 4496 - i32.store - i32.const 1 - i32.const 4496 - call $~lib/console/console.assert - global.get $~lib/memory/__stack_pointer - i32.const 4528 - i32.store offset=4 - i32.const 4528 - call $~lib/console/console.log - global.get $~lib/memory/__stack_pointer - i32.const 4576 - i32.store offset=4 - 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 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 + local.get $2 + global.get $~lib/console/timers + local.tee $2 i32.store + local.get $2 local.get $0 - i32.const 4624 - i32.store - i32.const 1 - i32.const 4624 - call $~lib/process/writeString - i32.const 1 - i32.const 4576 - call $~lib/process/writeString + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + if + global.get $~lib/memory/__stack_pointer + i32.const 5376 + i32.store offset=4 + i32.const 1 + i32.const 5376 + call $~lib/process/writeString + i32.const 1 + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store offset=4 + i32.const 1 + i32.const 5440 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end global.get $~lib/memory/__stack_pointer - i32.const 4464 + global.get $~lib/console/timers + local.tee $4 i32.store - i32.const 1 - i32.const 4464 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4672 - i32.store offset=4 + call $~lib/process/process.hrtime + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4545,249 +4341,378 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 0 i32.store + local.get $4 local.get $0 - i32.const 4720 - i32.store - i32.const 1 - i32.const 4720 - call $~lib/process/writeString - i32.const 1 - i32.const 4672 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store - i32.const 1 - i32.const 4464 - call $~lib/process/writeString + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + local.tee $2 + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $3 + if + local.get $3 + local.get $1 + i64.store offset=8 + else + local.get $4 + i32.load offset=16 + local.get $4 + i32.load offset=12 + i32.eq + if + local.get $4 + local.get $4 + i32.load offset=20 + local.get $4 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $4 + i32.load offset=4 + else + local.get $4 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=8 + local.tee $5 + i32.store + local.get $4 + local.get $4 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + i32.const 24 + i32.mul + local.get $5 + i32.add + local.tee $3 + local.get $0 + i32.store + local.get $0 + if + local.get $4 + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 + i64.store offset=8 + local.get $4 + local.get $4 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $4 + i32.load + local.get $4 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4752 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub + i32.const 8 + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4800 - i32.store - i32.const 1 - i32.const 4800 - call $~lib/process/writeString + return + end + i32.const 24384 + i32.const 24432 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + ) + (func $~lib/console/timeLogImpl (param $0 i32) + (local $1 i64) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 i32.const 1 - i32.const 4752 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store i32.const 1 - i32.const 4464 - call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4848 - i32.store offset=4 - 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 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 4896 - i32.store + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + global.get $~lib/console/timers + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $2 + i32.eqz + if + i32.const 5696 + i32.const 5760 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + local.get $2 + i64.load offset=8 + local.set $1 + call $~lib/process/process.hrtime + local.get $1 + i64.sub + i64.const 1000000 + i64.div_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/number/U64#toString + local.tee $2 + i32.store offset=4 + i32.const 1 + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7584 + i32.store offset=8 + i32.const 1 + i32.const 7584 + call $~lib/process/writeString + i32.const 1 + local.get $2 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 7616 + i32.store offset=8 + i32.const 1 + i32.const 7616 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeLog (param $0 i32) + (local $1 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 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 i32.const 1 - i32.const 4896 - call $~lib/process/writeString i32.const 1 - i32.const 4848 - call $~lib/process/writeString + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store + i32.const 5536 + i32.store offset=4 i32.const 1 - i32.const 4464 + i32.const 5536 call $~lib/process/writeString - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 24356 - i32.sub i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 5044 - i32.const 5040 - i32.store - i32.const 5048 - i32.const 5040 - i32.store - i32.const 5040 - global.set $~lib/rt/itcms/pinSpace - i32.const 5076 - i32.const 5072 - i32.store - i32.const 5080 - i32.const 5072 - i32.store - i32.const 5072 - global.set $~lib/rt/itcms/toSpace - i32.const 5220 - i32.const 5216 - i32.store - i32.const 5224 - i32.const 5216 - i32.store - i32.const 5216 - global.set $~lib/rt/itcms/fromSpace - 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 7972 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 96 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 4 - i32.store offset=12 local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - global.set $~lib/console/timers - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 - i32.const 4944 - call $~lib/console/console.time - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 - i32.const 4944 - call $~lib/console/console.timeLog - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 - i32.const 4944 - call $~lib/console/console.timeEnd - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/console/console.timeLog - global.get $~lib/memory/__stack_pointer - i32.const 7728 - i32.store offset=4 - i32.const 7728 - call $~lib/console/console.timeEnd - global.get $~lib/memory/__stack_pointer - i32.const 7776 - i32.store offset=4 - i32.const 7776 - call $~lib/console/console.time - global.get $~lib/memory/__stack_pointer - i32.const 7776 - i32.store offset=4 - i32.const 7776 - call $~lib/console/console.time + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 7824 + i32.const 5616 i32.store offset=4 - i32.const 7824 - call $~lib/console/console.log + i32.const 1 + i32.const 5616 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 7856 - i32.store offset=4 - i32.const 7856 - call $~lib/console/console.log + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + call $~lib/console/timeLogImpl + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeEnd (param $0 i32) + (local $1 i32) + (local $2 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 7972 + i32.lt_s + if + i32.const 24384 + i32.const 24432 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + i32.eqz + if global.get $~lib/memory/__stack_pointer - i32.const 7888 + i32.const 5536 i32.store offset=4 - i32.const 7888 - call $~lib/console/console.log + i32.const 1 + i32.const 5536 + call $~lib/process/writeString + i32.const 1 + local.get $0 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer - i32.const 7920 + i32.const 7648 i32.store offset=4 - i32.const 7920 - call $~lib/console/console.log + i32.const 1 + i32.const 7648 + call $~lib/process/writeString global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 24384 - i32.const 24432 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable + local.get $0 + call $~lib/console/timeLogImpl + global.get $~lib/memory/__stack_pointer + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/HASH<~lib/string/String> + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $0 + if + local.get $0 + local.get $0 + i32.load offset=16 + i32.const 1 + i32.or + i32.store offset=16 + local.get $1 + local.get $1 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $1 + i32.load offset=20 + local.tee $0 + local.get $0 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) + local.get $1 + i32.load offset=20 + local.get $1 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + local.get $1 + local.get $2 + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) (local $1 i32) @@ -4835,4 +4760,126 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4992 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4992 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index b0eee389d7..b9bced5e12 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -1,7 +1,7 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -253,38 +253,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -297,96 +297,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $3 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -398,7 +396,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -449,13 +447,13 @@ else i32.const 19 end - local.tee $4 + local.tee $0 i32.const 544106784 i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 local.get $1 if local.get $1 @@ -464,18 +462,18 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 local.get $4 + local.get $0 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $4 + local.get $0 i32.add - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.const 40 i32.store8 local.get $2 @@ -524,17 +522,17 @@ i32.add end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|0 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $2 i32.const 10 i32.rem_u @@ -548,9 +546,9 @@ br_if $do-loop|0 end local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 58 i32.store8 local.get $3 @@ -599,17 +597,17 @@ i32.add end end - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|1 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $3 i32.const 10 i32.rem_u @@ -623,7 +621,7 @@ br_if $do-loop|1 end local.get $0 - local.get $4 + local.get $1 i32.add local.tee $0 i32.const 2601 @@ -649,38 +647,38 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/crypto/buf local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/crypto/b1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/crypto/b2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5504 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6560 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -747,7 +745,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -770,7 +768,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -780,15 +778,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -853,30 +851,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -913,11 +887,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -929,28 +902,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -962,19 +932,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -999,9 +969,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1009,17 +979,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1147,7 +1117,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1158,7 +1128,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1178,44 +1148,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1225,7 +1194,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1235,20 +1204,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1276,7 +1245,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1303,15 +1272,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1323,15 +1289,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1352,6 +1318,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1361,7 +1330,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1398,8 +1367,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1514,18 +1483,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1608,7 +1577,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1743,56 +1716,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1870,19 +1840,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1893,54 +1856,50 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1948,16 +1907,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1965,16 +1924,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1991,7 +1950,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2001,13 +1960,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2020,40 +1979,40 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2073,8 +2032,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -2146,14 +2103,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2163,17 +2120,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2189,22 +2146,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -2215,11 +2172,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -2300,23 +2257,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2328,8 +2289,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2363,61 +2324,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) block $break|0 block $case76|0 @@ -2886,59 +2792,59 @@ local.get $1 i32.const 255 i32.and - local.tee $2 local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2953,17 +2859,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3109,19 +3015,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3136,7 +3042,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -3147,10 +3053,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3158,10 +3064,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -3172,7 +3078,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3202,17 +3108,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -3227,7 +3133,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -3238,10 +3144,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3249,10 +3155,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3263,7 +3169,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3289,17 +3195,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3314,7 +3220,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3325,10 +3231,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3336,10 +3242,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3350,7 +3256,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3387,134 +3293,175 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 - local.tee $4 + local.get $3 i32.const 2 i32.add local.set $1 + local.get $0 local.get $3 - local.tee $0 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $3 - local.get $4 + local.set $0 + end + local.get $2 + i32.const 8 + i32.and + if local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 local.get $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 - i32.const 8 + i32.const 4 i32.and if local.get $0 @@ -3528,7 +3475,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3536,54 +3483,20 @@ i32.load8_u i32.store8 local.get $3 - local.tee $0 i32.const 2 i32.add - local.set $3 - local.get $4 + local.set $1 local.get $0 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 - i32.const 2 - i32.add - local.tee $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 + local.get $0 i32.const 2 i32.add local.set $0 - local.get $1 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - i32.const 2 - i32.add - local.set $1 end local.get $2 - i32.const 4 + i32.const 2 i32.and if local.get $0 @@ -3591,52 +3504,17 @@ i32.load8_u i32.store8 local.get $0 - local.get $1 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - i32.const 2 - i32.add - local.tee $4 - local.get $1 - i32.const 2 - i32.add local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - i32.const 2 - i32.add - local.set $1 - local.get $4 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $4 i32.const 2 i32.add local.set $0 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 local.get $1 - i32.load8_u - i32.store8 - local.get $0 local.tee $4 i32.const 2 i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 2 - i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3848,31 +3726,27 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 6900 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + 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 6900 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -3881,17 +3755,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 4848 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if block $__inlined_func$~lib/util/number/utoa32 (result i32) - local.get $3 + local.get $5 i32.load8_u - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3903,7 +3776,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3914,53 +3787,53 @@ br $__inlined_func$~lib/util/number/utoa32 end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $1 i32.const 1 i32.shl i32.const 1 @@ -3968,8 +3841,8 @@ local.tee $2 i32.store local.get $2 - local.get $1 local.get $0 + local.get $1 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3981,141 +3854,139 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 6652 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $0 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store loop $for-loop|0 local.get $2 - local.get $5 - i32.gt_s + local.get $6 + i32.lt_s if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add - local.get $3 + local.get $2 local.get $5 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 - local.get $4 + local.set $1 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add i32.const 6656 - local.get $4 + local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $1 i32.add - local.set $0 + local.set $1 end - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $for-loop|0 end end - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add - local.get $2 - local.get $3 + local.get $5 + local.get $6 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.tee $2 + local.tee $0 i32.gt_s if - local.get $1 - local.set $0 - local.get $2 - local.set $1 - 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 6900 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 - select - local.tee $3 - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $1 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $4 - block $__inlined_func$~lib/string/String#substring - local.get $3 + block $__inlined_func$~lib/string/String#substring (result i32) + 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 6900 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $0 local.get $1 + local.get $0 local.get $1 - local.get $3 i32.lt_s select + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select i32.const 1 i32.shl - local.tee $1 - local.get $4 + local.set $3 + local.get $2 + local.get $0 + local.get $0 + local.get $2 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $0 + local.get $3 i32.sub - local.tee $3 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4123,59 +3994,58 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 4848 - local.set $0 br $__inlined_func$~lib/string/String#substring end i32.const 0 - local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $0 i32.eq - local.get $4 + local.get $3 select if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 br $__inlined_func$~lib/string/String#substring end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 local.get $0 + local.get $3 local.get $4 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $0 end + local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $4 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 return end i32.const 23312 @@ -4189,32 +4059,32 @@ (local $1 i32) (local $2 i32) (local $3 i32) - 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 6900 - i32.lt_s - if - i32.const 23312 - i32.const 23360 - i32.const 1 - i32.const 1 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + block $__inlined_func$~lib/string/String#concat (result i32) + 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 6900 + i32.lt_s + if + i32.const 23312 + i32.const 23360 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 4764 i32.load i32.const 1 i32.shr_u i32.const 1 i32.shl - local.tee $2 + local.tee $1 local.get $0 i32.const 20 i32.sub @@ -4223,9 +4093,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 i32.add - local.tee $1 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -4233,31 +4103,30 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 4848 - local.set $1 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 4768 - local.get $2 + local.get $1 call $~lib/memory/memory.copy local.get $1 - local.get $2 + local.get $3 i32.add local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 end - local.get $1 ) (func $~lib/process/writeString (param $0 i32) (local $1 i32) @@ -4277,7 +4146,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 end local.get $0 @@ -4303,7 +4172,7 @@ end local.get $0 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -4311,13 +4180,13 @@ i32.const 6680 i32.store i32.const 6676 - local.get $5 + local.get $4 i32.store i32.const 6680 local.get $3 i32.const 8 i32.shl - local.get $4 + local.get $5 i32.or local.get $2 i32.const 16 @@ -4366,7 +4235,7 @@ if local.get $1 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.lt_u if (result i32) @@ -4374,7 +4243,7 @@ i32.const 1 i32.add else - local.get $4 + local.get $5 i32.const 2048 i32.lt_u if (result i32) @@ -4382,18 +4251,17 @@ i32.const 2 i32.add else + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq local.get $3 local.get $1 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $4 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select if local.get $1 i32.load16_u offset=2 @@ -4427,12 +4295,22 @@ end end local.get $2 - call $~lib/rt/tlsf/__alloc + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $1 i32.const 3 global.set $~argumentsLength local.get $0 - local.get $5 + local.get $4 local.get $1 call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $2 @@ -4513,7 +4391,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -4591,20 +4469,20 @@ (local $0 i32) (local $1 i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 6900 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 memory.size @@ -4639,7 +4517,7 @@ i32.store i32.const 1568 global.set $~lib/rt/itcms/fromSpace - local.get $0 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4648,142 +4526,142 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 8 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 global.set $std-wasi/crypto/ab global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/ab - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 4 call $~lib/typedarray/Uint8Array.wrap global.set $std-wasi/crypto/buf global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/crypto/crypto.getRandomValues global.get $~lib/memory/__stack_pointer i32.const 4768 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 call $~lib/string/String.__concat - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/console/console.log global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#slice global.set $std-wasi/crypto/b1 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/ab - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 4 call $~lib/typedarray/Uint8Array.wrap global.set $std-wasi/crypto/buf global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/crypto/crypto.getRandomValues global.get $~lib/memory/__stack_pointer i32.const 4768 i32.store offset=4 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $0 + local.get $1 call $~lib/string/String.__concat - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/console/console.log global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#slice global.set $std-wasi/crypto/b2 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/ab - local.tee $0 + local.tee $1 i32.store i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 0 i32.const -1 call $~lib/typedarray/Uint8Array.wrap global.set $std-wasi/crypto/buf loop $for-loop|0 - local.get $1 + local.get $0 i32.const 4 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 local.get $1 + local.get $0 call $~lib/typedarray/Uint8Array#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/b1 local.tee $2 i32.store local.get $2 - local.get $1 - call $~lib/typedarray/Uint8Array#__get local.get $0 + call $~lib/typedarray/Uint8Array#__get + local.get $1 i32.ne if i32.const 0 @@ -4793,38 +4671,38 @@ call $~lib/wasi/index/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|1 - local.get $1 + local.get $0 i32.const 4 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/buf - local.tee $0 + local.tee $1 i32.store - local.get $0 local.get $1 + local.get $0 i32.const 4 i32.add call $~lib/typedarray/Uint8Array#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer global.get $std-wasi/crypto/b2 local.tee $2 i32.store local.get $2 - local.get $1 - call $~lib/typedarray/Uint8Array#__get local.get $0 + call $~lib/typedarray/Uint8Array#__get + local.get $1 i32.ne if i32.const 0 @@ -4834,10 +4712,10 @@ call $~lib/wasi/index/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end @@ -4874,13 +4752,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 local.get $0 i32.const 20 i32.sub i32.load offset=16 local.tee $3 - i32.gt_u + local.get $1 + i32.lt_u if i32.const 1472 i32.const 1680 @@ -4933,9 +4811,12 @@ local.get $3 local.get $0 i32.store - local.get $3 local.get $0 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 local.get $2 i32.store offset=8 @@ -4956,19 +4837,17 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 6900 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i32.const 0 i32.store i32.const 0 @@ -4980,9 +4859,10 @@ i32.const 0 i32.gt_s select - local.set $5 - local.get $0 + local.set $3 local.get $5 + local.get $0 + local.get $3 i32.sub local.tee $0 i32.const 0 @@ -4990,9 +4870,9 @@ i32.const 0 i32.gt_s select - local.tee $6 + local.tee $4 local.set $2 - local.get $4 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -5037,9 +4917,6 @@ i32.store local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -5059,19 +4936,22 @@ local.get $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store offset=4 - local.get $3 + local.get $5 local.get $2 call $~lib/memory/memory.fill local.get $0 - local.get $3 + local.get $5 i32.store + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $3 + local.get $5 i32.store offset=4 local.get $0 local.get $2 @@ -5086,16 +4966,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 local.get $0 i32.store local.get $0 i32.load offset=4 - local.get $5 + local.get $3 local.get $1 i32.load offset=4 i32.add - local.get $6 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -5111,4 +4990,72 @@ call $~lib/wasi/index/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index f0f6ba7829..497be7955f 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -283,38 +283,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -327,96 +327,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $3 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -428,7 +426,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -479,13 +477,13 @@ else i32.const 19 end - local.tee $4 + local.tee $0 i32.const 544106784 i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 local.get $1 if local.get $1 @@ -494,18 +492,18 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 local.get $4 + local.get $0 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $4 + local.get $0 i32.add - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.const 40 i32.store8 local.get $2 @@ -554,17 +552,17 @@ i32.add end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|0 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $2 i32.const 10 i32.rem_u @@ -578,9 +576,9 @@ br_if $do-loop|0 end local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 58 i32.store8 local.get $3 @@ -629,17 +627,17 @@ i32.add end end - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|1 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $3 i32.const 10 i32.rem_u @@ -653,7 +651,7 @@ br_if $do-loop|1 end local.get $0 - local.get $4 + local.get $1 i32.add local.tee $0 i32.const 2601 @@ -1025,11 +1023,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -1041,28 +1038,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1074,19 +1068,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1111,9 +1105,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1121,17 +1115,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1259,7 +1253,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1270,7 +1264,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1290,44 +1284,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1337,7 +1330,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1347,20 +1340,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1388,7 +1381,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1415,15 +1408,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1435,15 +1425,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1464,6 +1454,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1473,7 +1466,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1510,8 +1503,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1586,56 +1579,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 + i32.const 1 + i32.const 27 local.get $1 i32.clz i32.sub - local.tee $2 + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1713,19 +1703,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1736,54 +1719,50 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1791,16 +1770,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1808,16 +1787,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1834,7 +1813,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1844,13 +1823,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1863,40 +1842,40 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1916,8 +1895,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) @@ -1961,13 +1938,12 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/process/writeString (param $0 i32) @@ -1988,7 +1964,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 end local.get $0 @@ -2014,7 +1990,7 @@ end local.get $0 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.ge_u br_if $break|0 @@ -2022,13 +1998,13 @@ i32.const 1096 i32.store i32.const 1092 - local.get $5 + local.get $4 i32.store i32.const 1096 local.get $3 i32.const 8 i32.shl - local.get $4 + local.get $5 i32.or local.get $2 i32.const 16 @@ -2077,7 +2053,7 @@ if local.get $1 i32.load16_u - local.tee $4 + local.tee $5 i32.const 128 i32.lt_u if (result i32) @@ -2085,7 +2061,7 @@ i32.const 1 i32.add else - local.get $4 + local.get $5 i32.const 2048 i32.lt_u if (result i32) @@ -2093,18 +2069,17 @@ i32.const 2 i32.add else + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq local.get $3 local.get $1 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $4 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select if local.get $1 i32.load16_u offset=2 @@ -2138,12 +2113,22 @@ end end local.get $2 - call $~lib/rt/tlsf/__alloc + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $1 i32.const 3 global.set $~argumentsLength local.get $0 - local.get $5 + local.get $4 local.get $1 call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $2 @@ -2187,55 +2172,55 @@ (local $0 i32) (local $1 i32) i32.const 4448 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4528 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/process/process.argv local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $~lib/process/process.env local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/process/argv local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/process/env local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std-wasi/process/envKeys local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 4784 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4560 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4976 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 4352 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6128 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 7184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -2302,7 +2287,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -2325,7 +2310,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -2335,15 +2320,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -2408,33 +2393,10 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -2517,7 +2479,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -2720,14 +2686,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2737,17 +2703,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2763,22 +2729,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -2789,11 +2755,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -2874,23 +2840,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end end - local.get $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2902,8 +2872,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2937,66 +2907,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4656 - i32.const 294 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -3010,17 +2920,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3166,19 +3076,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3193,7 +3103,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -3204,10 +3114,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3215,10 +3125,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -3229,7 +3139,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3259,17 +3169,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -3284,7 +3194,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -3295,10 +3205,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3306,10 +3216,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3320,7 +3230,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3346,17 +3256,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3371,7 +3281,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3382,10 +3292,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3393,10 +3303,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3407,7 +3317,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3444,131 +3354,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -3585,59 +3473,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3654,7 +3536,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3665,11 +3547,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3683,17 +3565,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3904,7 +3786,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -3913,28 +3795,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -4008,10 +3890,13 @@ local.get $0 local.get $2 i32.store offset=4 - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $0 local.get $1 @@ -4055,10 +3940,13 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -4074,12 +3962,11 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $3 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 local.get $1 @@ -4550,47 +4437,54 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 - local.tee $1 i32.load offset=4 - local.tee $2 + local.tee $1 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add - local.set $3 + local.set $2 loop $while-continue|0 + local.get $1 local.get $2 - local.get $3 i32.lt_u if - local.get $2 + local.get $1 i32.load - local.tee $0 + local.tee $3 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end - local.get $1 + local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=16 i32.const 12 @@ -4601,7 +4495,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|00 + loop $while-continue|03 local.get $0 local.get $2 i32.lt_u @@ -4614,20 +4508,31 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end end local.get $0 i32.const 12 i32.add local.set $0 - br $while-continue|00 + br $while-continue|03 end end local.get $1 - call $~lib/rt/itcms/__visit + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end unreachable @@ -4703,46 +4608,46 @@ i32.shl i32.add i32.load - local.set $2 + local.set $0 loop $while-continue|0 - local.get $2 + local.get $0 if - local.get $2 + local.get $0 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.load - local.tee $0 + local.tee $3 i32.store block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 1 - local.get $0 local.get $1 + local.get $3 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 local.get $1 i32.const 0 - local.get $0 + local.get $3 select i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -4752,10 +4657,10 @@ i32.ne br_if $__inlined_func$~lib/string/String.__eq drop - local.get $0 + local.get $3 i32.const 0 local.get $1 - local.get $4 + local.get $2 call $~lib/util/string/compareImpl i32.eqz end @@ -4765,13 +4670,13 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 return end - local.get $3 + local.get $4 i32.const -2 i32.and - local.set $2 + local.set $0 br $while-continue|0 end end @@ -4791,11 +4696,11 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 7404 i32.lt_s @@ -4824,15 +4729,25 @@ end i32.const 1088 i32.load - local.tee $7 + local.tee $2 i32.const 2 i32.shl local.tee $0 i32.const 1092 i32.load i32.add - local.tee $8 - call $~lib/rt/tlsf/__alloc + local.tee $3 + local.set $4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $4 local.get $0 local.get $4 @@ -4868,52 +4783,57 @@ i32.const 24 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store - local.get $0 + local.get $5 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $5 + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 i32.const 3 i32.store offset=4 - local.get $0 + local.get $5 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store offset=8 local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $5 + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 i32.const 4 i32.store offset=12 - local.get $0 + local.get $5 i32.const 0 i32.store offset=16 - local.get $0 + local.get $5 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.tee $1 + local.get $5 i32.store loop $for-loop|0 - local.get $5 - local.get $7 + local.get $1 + local.get $2 i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 2 i32.shl local.get $4 @@ -4921,81 +4841,84 @@ i32.load local.tee $0 local.get $0 - local.get $8 + local.get $3 i32.add local.get $4 i32.sub call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 5168 i32.store offset=8 - i32.const 0 - local.set $0 - block $__inlined_func$~lib/string/String#indexOf + block $__inlined_func$~lib/string/String#indexOf (result i32) + i32.const 0 i32.const 5164 i32.load i32.const 1 i32.shr_u - local.tee $6 + local.tee $7 i32.eqz br_if $__inlined_func$~lib/string/String#indexOf + drop i32.const -1 - local.set $0 - local.get $3 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $8 i32.eqz br_if $__inlined_func$~lib/string/String#indexOf + drop i32.const 0 - local.get $2 - local.get $2 + local.get $8 + local.get $8 + i32.const 0 + i32.gt_s select local.set $0 - local.get $2 - local.get $6 + local.get $8 + local.get $7 i32.sub - local.set $2 - loop $for-loop|00 + local.set $8 + loop $for-loop|01 local.get $0 - local.get $2 + local.get $8 i32.le_s if - local.get $3 local.get $0 - i32.const 5168 local.get $6 + local.get $0 + i32.const 5168 + local.get $7 call $~lib/util/string/compareImpl i32.eqz br_if $__inlined_func$~lib/string/String#indexOf + drop local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|00 + br $for-loop|01 end end i32.const -1 - local.set $0 end - local.get $0 + local.tee $0 i32.const -1 i32.xor if - local.get $3 + local.get $6 i32.const 0 local.get $0 call $~lib/string/String#substring - local.set $2 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 i32.store offset=8 - local.get $3 + local.get $6 local.get $0 i32.const 1 i32.add @@ -5005,23 +4928,23 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 - local.get $2 + local.get $5 + local.get $7 local.get $0 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set else global.get $~lib/memory/__stack_pointer i32.const 5200 i32.store offset=12 - local.get $1 - local.get $3 + local.get $5 + local.get $6 i32.const 5200 call $~lib/map/Map<~lib/string/String,~lib/string/String>#set end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end @@ -5031,7 +4954,7 @@ i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 return end i32.const 23808 @@ -5043,8 +4966,8 @@ ) (func $start:std-wasi/process (local $0 i32) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5060,13 +4983,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 1056 i32.store i32.const 1056 @@ -5132,11 +5055,11 @@ i32.const 1088 i32.const 1092 call $~lib/bindings/wasi_snapshot_preview1/args_sizes_get - local.tee $1 + local.tee $3 i32.const 65535 i32.and if - local.get $1 + local.get $3 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 64 @@ -5146,25 +5069,35 @@ end i32.const 1088 i32.load - local.tee $4 + local.tee $3 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.const 1092 i32.load i32.add + local.tee $5 + local.set $6 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $6 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $6 - call $~lib/rt/tlsf/__alloc - local.tee $1 - local.get $1 - local.get $5 + local.get $4 + local.get $6 i32.add call $~lib/bindings/wasi_snapshot_preview1/args_get - local.tee $5 + local.tee $4 i32.const 65535 i32.and if - local.get $5 + local.get $4 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 71 @@ -5173,49 +5106,49 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $5 + local.tee $4 i32.store loop $for-loop|0 + local.get $2 local.get $3 - local.get $4 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.const 2 i32.shl - local.get $1 + local.get $6 i32.add i32.load local.tee $7 - local.get $6 + local.get $5 local.get $7 i32.add - local.get $1 + local.get $6 i32.sub call $~lib/string/String.UTF8.decodeUnsafe local.tee $7 i32.store offset=4 - local.get $5 - local.get $3 + local.get $4 + local.get $2 local.get $7 call $~lib/array/Array<~lib/string/String>#__set - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end - local.get $1 + local.get $6 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 global.set $~lib/process/process.argv global.get $~lib/process/process.argv global.set $std-wasi/process/argv @@ -5226,28 +5159,28 @@ call $~lib/console/console.log global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/argv - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.load offset=12 - local.set $3 + local.set $2 loop $for-loop|00 local.get $0 - local.get $3 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/argv - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 + local.get $3 local.get $0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store - local.get $1 + local.get $3 call $~lib/console/console.log local.get $0 i32.const 1 @@ -5261,15 +5194,15 @@ global.get $~lib/process/process.env global.set $std-wasi/process/env global.get $~lib/memory/__stack_pointer - local.tee $4 - global.get $std-wasi/process/env local.tee $3 + global.get $std-wasi/process/env + local.tee $4 i32.store i32.const 0 - local.set $1 + local.set $2 i32.const 0 local.set $0 - local.get $4 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -5278,25 +5211,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i64.const 0 i64.store - local.get $3 + local.get $4 i32.load offset=8 local.set $5 - local.get $4 local.get $3 + local.get $4 i32.load offset=16 - local.tee $4 - call $~lib/array/Array<~lib/string/String>#constructor local.tee $3 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $4 i32.store loop $for-loop|01 - local.get $1 - local.get $4 + local.get $2 + local.get $3 i32.lt_s if - local.get $1 + local.get $2 i32.const 12 i32.mul local.get $5 @@ -5312,7 +5245,7 @@ i32.load local.tee $6 i32.store offset=4 - local.get $3 + local.get $4 local.get $0 local.get $6 call $~lib/array/Array<~lib/string/String>#__set @@ -5321,25 +5254,25 @@ i32.add local.set $0 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|01 end end - local.get $3 + local.get $4 local.get $0 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $4 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 global.set $std-wasi/process/envKeys global.get $~lib/memory/__stack_pointer i32.const 5232 @@ -5350,33 +5283,33 @@ local.set $0 global.get $~lib/memory/__stack_pointer global.get $std-wasi/process/envKeys - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.load offset=12 - local.set $3 + local.set $2 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 global.get $std-wasi/process/envKeys local.tee $4 i32.store - local.get $1 + local.get $3 local.get $4 local.get $0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 5280 i32.store offset=4 i32.const 5280 call $~lib/process/writeString - local.get $1 + local.get $3 call $~lib/console/console.log global.get $~lib/memory/__stack_pointer i32.const 5312 @@ -5388,11 +5321,11 @@ local.tee $4 i32.store offset=4 local.get $4 - local.get $1 - local.get $1 + local.get $3 + local.get $3 call $~lib/util/hash/HASH<~lib/string/String> call $~lib/map/Map<~lib/string/String,~lib/string/String>#find - local.tee $1 + local.tee $3 i32.eqz if i32.const 5344 @@ -5403,11 +5336,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.load offset=4 - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 call $~lib/console/console.log local.get $0 i32.const 1 @@ -5441,7 +5374,7 @@ i64.load i64.const 1000000 i64.div_u - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -5454,7 +5387,7 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/number/itoa64 - local.get $2 + local.get $1 i64.eqz if global.get $~lib/memory/__stack_pointer @@ -5466,21 +5399,21 @@ br $__inlined_func$~lib/util/number/itoa64 end i64.const 0 - local.get $2 + local.get $1 i64.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $1 - select local.tee $2 + select + local.tee $1 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.wrap_i64 local.tee $3 local.tee $0 @@ -5529,7 +5462,7 @@ i32.add end end - local.get $1 + local.get $2 i32.add local.tee $4 i32.const 1 @@ -5544,57 +5477,57 @@ call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $2 + local.get $1 i64.const 10000000000 i64.ge_u i32.add else - local.get $2 + local.get $1 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $2 + local.get $1 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $2 + local.get $1 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $2 + local.get $1 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $2 + local.get $1 i64.const 1000000000000000000 i64.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 @@ -5604,11 +5537,11 @@ local.tee $0 i32.store local.get $0 - local.get $2 + local.get $1 local.get $3 call $~lib/util/number/utoa64_dec_lut end - local.get $1 + local.get $2 if local.get $0 i32.const 45 @@ -5647,7 +5580,7 @@ end i32.const 1088 i64.load - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -5660,7 +5593,7 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/number/utoa64 - local.get $2 + local.get $1 i64.eqz if global.get $~lib/memory/__stack_pointer @@ -5671,14 +5604,14 @@ local.set $0 br $__inlined_func$~lib/util/number/utoa64 end - local.get $2 + local.get $1 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.wrap_i64 - local.tee $3 + local.tee $2 local.tee $0 i32.const 100000 i32.lt_u @@ -5725,7 +5658,7 @@ i32.add end end - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -5733,62 +5666,62 @@ local.tee $0 i32.store local.get $0 + local.get $2 local.get $3 - local.get $1 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $2 + local.get $1 i64.const 10000000000 i64.ge_u i32.add else - local.get $2 + local.get $1 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $2 + local.get $1 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $2 + local.get $1 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $2 + local.get $1 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $2 + local.get $1 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $2 + local.get $1 i64.const 1000000000000000000 i64.ge_u i32.add end end - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 @@ -5796,8 +5729,8 @@ local.tee $0 i32.store local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa64_dec_lut end global.get $~lib/memory/__stack_pointer @@ -5827,12 +5760,12 @@ i32.const 20 i32.sub i32.load offset=16 - local.set $1 + local.set $2 i32.const 1088 local.get $0 i32.store i32.const 1092 - local.get $1 + local.get $2 i32.store i32.const 0 i32.const 1088 @@ -5901,10 +5834,6 @@ i32.store local.get $1 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 i32.const 0 @@ -5932,26 +5861,29 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 local.get $3 + local.get $2 call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $1 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $3 i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 local.get $0 @@ -6018,12 +5950,12 @@ block $while-break|0 local.get $0 i32.load8_u - local.set $3 + local.set $5 local.get $0 i32.const 1 i32.add local.set $0 - local.get $3 + local.get $5 i32.const 128 i32.and if @@ -6035,20 +5967,20 @@ i32.load8_u i32.const 63 i32.and - local.set $5 + local.set $6 local.get $0 i32.const 1 i32.add local.set $0 - local.get $3 + local.get $5 i32.const 224 i32.and i32.const 192 i32.eq if local.get $1 + local.get $6 local.get $5 - local.get $3 i32.const 31 i32.and i32.const 6 @@ -6064,24 +5996,24 @@ i32.load8_u i32.const 63 i32.and - local.set $6 + local.set $3 local.get $0 i32.const 1 i32.add local.set $0 - local.get $3 + local.get $5 i32.const 240 i32.and i32.const 224 i32.eq if - local.get $6 local.get $3 + local.get $5 i32.const 15 i32.and i32.const 12 i32.shl - local.get $5 + local.get $6 i32.const 6 i32.shl i32.or @@ -6096,16 +6028,16 @@ i32.load8_u i32.const 63 i32.and - local.get $3 + local.get $5 i32.const 7 i32.and i32.const 18 i32.shl - local.get $5 + local.get $6 i32.const 12 i32.shl i32.or - local.get $6 + local.get $3 i32.const 6 i32.shl i32.or @@ -6149,11 +6081,11 @@ end end else - local.get $3 + local.get $5 i32.eqz br_if $while-break|0 local.get $1 - local.get $3 + local.get $5 i32.store16 end local.get $1 @@ -6345,10 +6277,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $4 i32.sub - local.tee $2 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -6362,7 +6294,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -6375,7 +6307,7 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 @@ -6384,7 +6316,7 @@ local.get $0 local.get $4 i32.add - local.get $2 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6418,17 +6350,20 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH<~lib/string/String> - local.tee $7 + local.tee $8 call $~lib/map/Map<~lib/string/String,~lib/string/String>#find local.tee $3 if local.get $3 local.get $2 i32.store offset=4 - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end else local.get $0 i32.load offset=16 @@ -6456,7 +6391,7 @@ i32.const 1 i32.or end - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -6473,14 +6408,14 @@ i32.const 0 i32.store offset=8 local.get $3 - local.get $10 + local.get $7 i32.const 1 i32.add local.tee $3 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $3 @@ -6488,7 +6423,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $6 + local.tee $9 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -6496,51 +6431,51 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $11 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $5 + local.set $10 local.get $4 local.set $3 loop $while-continue|0 local.get $5 - local.get $11 + local.get $10 i32.ne if - local.get $11 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $5 i32.load - local.tee $9 + local.tee $11 i32.store offset=8 local.get $3 - local.get $9 + local.get $11 i32.store local.get $3 - local.get $11 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $3 - local.get $9 + local.get $11 call $~lib/util/hash/HASH<~lib/string/String> - local.get $10 + local.get $7 i32.and i32.const 2 i32.shl - local.get $8 + local.get $6 i32.add - local.tee $9 + local.tee $11 i32.load i32.store offset=8 - local.get $9 + local.get $11 local.get $3 i32.store local.get $3 @@ -6548,32 +6483,38 @@ i32.add local.set $3 end - local.get $11 + local.get $5 i32.const 12 i32.add - local.set $11 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $8 + local.get $6 i32.store + local.get $6 + if + local.get $0 + local.get $6 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $8 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $10 + local.get $7 i32.store offset=4 local.get $0 local.get $4 i32.store offset=8 - local.get $0 local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $4 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $6 + local.get $9 i32.store offset=12 local.get $0 local.get $0 @@ -6592,11 +6533,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $10 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $10 + local.get $4 i32.const 12 i32.mul local.get $3 @@ -6604,17 +6545,23 @@ local.tee $3 local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 local.get $2 i32.store offset=4 - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $0 i32.load offset=20 @@ -6626,7 +6573,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $7 + local.get $8 i32.and i32.const 2 i32.shl @@ -6651,4 +6598,77 @@ call $~lib/wasi/index/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4656 + i32.const 294 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index cb72604bf0..c2e737cf0d 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -24,24 +24,23 @@ (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 0 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 - local.get $2 - select - local.set $3 + local.tee $1 + drop + i32.const 0 + local.set $2 + local.get $1 local.get $2 - local.get $3 i32.const 1292 i32.load i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.add i32.lt_s if @@ -50,38 +49,36 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) i32.const 1296 - local.set $4 - local.get $3 + local.set $3 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.tee $3 + local.tee $2 i32.const 7 i32.and - i32.const 1 - local.get $2 - local.tee $1 + i32.eqz + local.get $1 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load - local.get $4 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 8 i32.add - local.set $4 + local.set $3 local.get $1 i32.const 4 i32.sub @@ -100,27 +97,27 @@ local.set $1 local.get $0 if - local.get $4 - i32.load16_u - local.tee $0 local.get $3 i32.load16_u - local.tee $2 + local.tee $4 + local.get $2 + i32.load16_u + local.tee $0 i32.ne if - local.get $2 local.get $0 + local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $4 + local.set $3 br $while-continue|1 end end @@ -187,11 +184,11 @@ ) (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1308 i32.lt_s @@ -252,11 +249,11 @@ ) (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1308 i32.lt_s @@ -308,11 +305,11 @@ ) (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1308 i32.lt_s @@ -363,11 +360,11 @@ ) (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1308 i32.lt_s @@ -426,11 +423,11 @@ ) (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1308 i32.lt_s diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index dd66dff450..ef5d2c9f11 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -99,43 +99,43 @@ (local $0 i32) (local $1 i32) i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $std/array-literal/emptyArrayI32 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array-literal/dynamicArrayI8 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array-literal/dynamicArrayI32 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array-literal/dynamicArrayRef local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array-literal/dynamicArrayRefWithCtor local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1200 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -202,7 +202,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -225,7 +225,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -235,15 +235,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -308,30 +308,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -368,11 +344,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -384,28 +359,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -417,19 +389,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -454,9 +426,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -464,17 +436,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -602,7 +574,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -613,7 +585,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -633,44 +605,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -680,7 +651,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -690,20 +661,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -731,7 +702,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -758,15 +729,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -778,15 +746,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -807,6 +775,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -816,7 +787,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -853,8 +824,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1013,7 +984,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1138,7 +1113,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1148,7 +1123,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1161,14 +1136,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1193,56 +1167,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1343,12 +1314,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1364,14 +1335,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1382,18 +1353,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1404,54 +1374,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1459,16 +1425,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1476,15 +1442,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1512,12 +1478,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1531,7 +1497,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1541,7 +1507,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1559,12 +1525,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1594,8 +1560,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1624,19 +1590,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1645,18 +1611,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1665,10 +1631,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1677,97 +1643,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1799,67 +1765,7 @@ end end end - local.get $3 - ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end + local.get $2 ) (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 @@ -1870,10 +1776,13 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $~lib/array/Array~visit (param $0 i32) (local $1 i32) @@ -1887,18 +1796,18 @@ i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $1 - local.get $2 + local.get $3 i32.lt_u if local.get $1 i32.load - local.tee $3 + local.tee $2 if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 i32.const 4 @@ -1909,61 +1818,52 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/array/Array - block $std/array-literal/RefWithCtor - block $~lib/array/Array - block $std/array-literal/Ref - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $std/array-literal/RefWithCtor + block $~lib/array/Array + block $std/array-literal/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - call $~lib/rt/itcms/__visit + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner0 $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end + local.get $0 + call $~lib/array/Array~visit return end - local.get $0 - call $~lib/array/Array~visit return end + local.get $0 + call $~lib/array/Array~visit return end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - call $~lib/array/Array~visit - return + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start call $start:std/array-literal @@ -2547,10 +2447,13 @@ local.tee $2 local.get $3 i32.store - local.get $2 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 local.get $3 i32.store offset=4 @@ -2632,4 +2535,77 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 3432398cde..ffd65decf8 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -1,12 +1,12 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) @@ -718,38 +718,38 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 7696 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $std/array/inputStabArr local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/array/outputStabArr local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 15152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2176 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 5952 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 10256 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11312 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -816,7 +816,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -839,7 +839,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -849,15 +849,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -922,30 +922,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -982,11 +958,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -998,28 +973,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1031,19 +1003,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1068,9 +1040,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1078,17 +1050,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1216,7 +1188,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1227,7 +1199,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1247,44 +1219,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1294,7 +1265,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1304,20 +1275,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1345,7 +1316,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1372,15 +1343,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1392,15 +1360,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1421,6 +1389,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1430,7 +1401,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1467,8 +1438,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1583,18 +1554,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1677,7 +1648,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1812,56 +1787,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1939,19 +1911,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1962,54 +1927,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -2017,16 +1978,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -2034,16 +1995,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -2060,7 +2021,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2070,13 +2031,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2089,40 +2050,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2142,12 +2103,10 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) block $~lib/util/memory/memset|inlined.0 local.get $2 @@ -2159,7 +2118,7 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.sub local.get $1 @@ -2174,12 +2133,12 @@ local.get $0 local.get $1 i32.store8 offset=2 - local.get $3 + local.get $4 i32.const 2 i32.sub local.get $1 i32.store8 - local.get $3 + local.get $4 i32.const 3 i32.sub local.get $1 @@ -2191,7 +2150,7 @@ local.get $0 local.get $1 i32.store8 offset=3 - local.get $3 + local.get $4 i32.const 4 i32.sub local.get $1 @@ -2206,9 +2165,9 @@ i32.sub i32.const 3 i32.and - local.tee $5 + local.tee $4 i32.add - local.tee $3 + local.tee $5 local.get $1 i32.const 255 i32.and @@ -2216,9 +2175,9 @@ i32.mul local.tee $0 i32.store - local.get $3 - local.get $2 local.get $5 + local.get $2 + local.get $4 i32.sub i32.const -4 i32.and @@ -2233,10 +2192,10 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $5 local.get $0 i32.store offset=4 - local.get $3 + local.get $5 local.get $0 i32.store offset=8 local.get $1 @@ -2253,16 +2212,16 @@ i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $5 local.get $0 i32.store offset=12 - local.get $3 + local.get $5 local.get $0 i32.store offset=16 - local.get $3 + local.get $5 local.get $0 i32.store offset=20 - local.get $3 + local.get $5 local.get $0 i32.store offset=24 local.get $1 @@ -2285,43 +2244,43 @@ i32.sub local.get $0 i32.store - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 i32.add - local.tee $5 + local.tee $4 i32.add local.set $1 local.get $2 - local.get $5 + local.get $4 i32.sub local.set $2 local.get $0 i64.extend_i32_u - local.tee $4 + local.tee $3 i64.const 32 i64.shl - local.get $4 + local.get $3 i64.or - local.set $4 + local.set $3 loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u if local.get $1 - local.get $4 + local.get $3 i64.store local.get $1 - local.get $4 + local.get $3 i64.store offset=8 local.get $1 - local.get $4 + local.get $3 i64.store offset=16 local.get $1 - local.get $4 + local.get $3 i64.store offset=24 local.get $2 i32.const 32 @@ -2384,23 +2343,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2412,8 +2375,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2448,66 +2411,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2521,17 +2424,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2677,19 +2580,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2704,7 +2607,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2715,10 +2618,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2726,10 +2629,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2740,7 +2643,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2770,17 +2673,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2795,7 +2698,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2806,10 +2709,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2817,10 +2720,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2831,7 +2734,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2857,17 +2760,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2882,7 +2785,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2893,10 +2796,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2904,10 +2807,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2918,7 +2821,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2955,131 +2858,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -3096,59 +2977,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3165,7 +3040,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3176,11 +3051,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3194,17 +3069,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3608,7 +3483,6 @@ (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 i32.load offset=8 local.tee $5 @@ -3663,42 +3537,39 @@ local.set $1 end local.get $1 - local.set $2 local.get $4 - local.tee $3 i32.const 20 i32.sub - local.tee $4 + local.tee $2 i32.load i32.const -4 i32.and i32.const 16 i32.sub - local.get $1 - i32.ge_u + i32.le_u if - local.get $4 local.get $2 + local.get $1 i32.store offset=16 - local.get $3 + local.get $4 br $__inlined_func$~lib/rt/itcms/__renew end + local.get $1 local.get $2 - local.get $4 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $6 - local.get $3 - local.get $2 + local.tee $3 local.get $4 + local.get $1 + local.get $2 i32.load offset=16 - local.tee $4 + local.tee $2 + local.get $1 local.get $2 - local.get $4 i32.lt_u select call $~lib/memory/memory.copy - local.get $6 + local.get $3 end local.tee $2 local.get $5 @@ -3709,7 +3580,7 @@ i32.sub call $~lib/memory/memory.fill local.get $2 - local.get $3 + local.get $4 i32.ne if local.get $0 @@ -3718,10 +3589,13 @@ local.get $0 local.get $2 i32.store offset=4 - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $0 local.get $1 @@ -3781,8 +3655,8 @@ local.get $0 i32.load offset=12 local.tee $1 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -3814,10 +3688,13 @@ i32.add local.get $2 i32.store - local.get $0 local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end ) (func $~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4033,63 +3910,69 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) (local $5 i32) - (local $6 i64) + (local $6 i32) (local $7 i64) - (local $8 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.tee $2 + local.get $1 i32.const 1 i32.gt_u if - local.get $2 + local.get $1 i32.const 1 i32.shr_u - local.set $8 - local.get $2 + local.set $4 + local.get $1 i32.const 8 i32.sub - local.set $3 + local.set $5 loop $while-continue|0 - local.get $8 - local.get $1 + local.get $4 + local.get $2 i32.const 7 i32.add i32.gt_u if - local.get $1 - local.get $5 + local.get $0 + local.get $2 i32.add - local.tee $4 - i64.load local.tee $6 + i64.load + local.tee $3 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $6 + local.get $3 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.set $6 - local.get $4 + local.tee $3 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and local.get $3 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + local.set $3 + local.get $6 + local.get $0 local.get $5 i32.add - local.get $1 + local.get $2 i32.sub - local.tee $4 + local.tee $6 i64.load local.tee $7 i64.const 8 @@ -4116,64 +3999,51 @@ i64.const 32 i64.rotr i64.store - local.get $4 - local.get $6 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and local.get $6 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr + local.get $3 i64.store - local.get $1 + local.get $2 i32.const 8 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $2 + local.set $1 loop $while-continue|1 - local.get $1 - local.get $8 + local.get $2 + local.get $4 i32.lt_u if - local.get $1 - local.get $5 + local.get $0 + local.get $2 i32.add - local.tee $3 + local.tee $5 i32.load8_u - local.set $4 - local.get $3 - local.get $2 + local.set $6 + local.get $5 local.get $1 + local.get $2 i32.sub - local.get $5 + local.get $0 i32.add - local.tee $3 + local.tee $5 i32.load8_u i32.store8 - local.get $3 - local.get $4 + local.get $5 + local.get $6 i32.store8 - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|1 end end end - local.get $0 ) (func $~lib/array/Array#reverse (param $0 i32) (result i32) (local $1 i32) @@ -4183,48 +4053,47 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $2 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $4 i32.const 1 i32.gt_u if - local.get $2 + local.get $4 i32.const 1 i32.shr_u - local.set $7 - local.get $2 + local.set $3 + local.get $4 i32.const 2 i32.sub - local.set $4 + local.set $5 loop $while-continue|0 - local.get $7 + local.get $3 local.get $1 i32.const 1 i32.add i32.gt_u if - local.get $4 + local.get $5 local.get $1 i32.sub i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add - local.tee $5 + local.tee $6 i32.load i32.const 16 i32.rotr - local.set $8 - local.get $5 + local.set $7 + local.get $6 local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add local.tee $6 i32.load @@ -4232,7 +4101,7 @@ i32.rotr i32.store local.get $6 - local.get $8 + local.get $7 i32.store local.get $1 i32.const 2 @@ -4241,36 +4110,36 @@ br $while-continue|0 end end - local.get $2 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.lt_u if local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $4 - local.get $2 - local.get $6 + local.set $6 + local.get $5 + local.get $4 local.get $1 i32.sub i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add local.tee $5 i32.load16_u i32.store16 local.get $5 - local.get $4 + local.get $6 i32.store16 local.get $1 i32.const 1 @@ -4412,8 +4281,8 @@ ) (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const -1 - i32.le_s + i32.const 0 + i32.lt_s ) (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 @@ -4543,18 +4412,17 @@ local.get $1 i32.const 2 i32.eq + local.get $0 + i32.const 202 + i32.ne + i32.and if - local.get $0 - i32.const 202 - i32.ne - if - i32.const 0 - i32.const 1552 - i32.const 735 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 1552 + i32.const 735 + i32.const 7 + call $~lib/builtins/abort + unreachable end ) (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) @@ -4749,41 +4617,41 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 f32) (local $6 f32) - (local $7 f32) - (local $8 i32) + (local $7 i32) + (local $8 f32) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 2 i32.shl local.get $0 i32.add local.tee $3 f32.load offset=4 - local.tee $7 + local.tee $8 local.set $6 local.get $3 f32.load @@ -4791,7 +4659,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -4800,10 +4668,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -4819,10 +4687,10 @@ local.get $0 i32.add f32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -4835,7 +4703,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 f32.store offset=8 local.get $3 i32.const 1 @@ -4897,10 +4765,10 @@ i32.add local.get $6 f32.store offset=4 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -4908,8 +4776,8 @@ (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 f32) - (local $6 f32) - (local $7 i32) + (local $6 i32) + (local $7 f32) local.get $1 local.get $2 i32.eq @@ -4950,9 +4818,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 f32.load offset=4 - local.get $7 + local.get $6 f32.load i32.const 2 global.set $~argumentsLength @@ -4993,14 +4861,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 f32.load f32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 f32.store local.get $2 @@ -5179,13 +5047,14 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $9 f32) + (local $10 f32) + (local $11 f32) (local $12 i32) (local $13 i32) - (local $14 f32) - (local $15 f32) + (local $14 i32) + (local $15 i32) + (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -5199,11 +5068,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -5211,17 +5079,17 @@ end local.get $0 f32.load - local.set $15 + local.set $11 local.get $0 f32.load offset=4 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5230,21 +5098,20 @@ local.tee $1 select f32.store - local.get $15 - local.get $14 - local.get $1 - select - local.set $15 local.get $0 f32.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5254,25 +5121,25 @@ select f32.store offset=4 local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $15 + local.set $10 local.get $0 f32.load offset=4 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5282,8 +5149,8 @@ select f32.store local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f32.store offset=4 @@ -5291,7 +5158,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -5303,52 +5170,68 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $12 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $11 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $13 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -5357,32 +5240,32 @@ if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 - local.get $13 + local.get $7 + local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -5391,68 +5274,66 @@ i32.lt_s if local.get $0 - local.get $6 - local.get $13 - local.get $6 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $13 + local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $16 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $11 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -5460,26 +5341,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $10 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -5488,14 +5369,14 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -5507,7 +5388,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -5519,13 +5400,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -5536,9 +5417,9 @@ br $for-loop|4 end end - local.get $10 + local.get $15 call $~lib/rt/tlsf/__free - local.get $12 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) @@ -5638,41 +5519,41 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 f64) (local $6 f64) - (local $7 f64) - (local $8 i32) + (local $7 i32) + (local $8 f64) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 3 i32.shl local.get $0 i32.add local.tee $3 f64.load offset=8 - local.tee $7 + local.tee $8 local.set $6 local.get $3 f64.load @@ -5680,7 +5561,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -5689,10 +5570,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -5708,10 +5589,10 @@ local.get $0 i32.add f64.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -5724,7 +5605,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 f64.store offset=16 local.get $3 i32.const 1 @@ -5786,10 +5667,10 @@ i32.add local.get $6 f64.store offset=8 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -5797,8 +5678,8 @@ (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 f64) - (local $6 f64) - (local $7 i32) + (local $6 i32) + (local $7 f64) local.get $1 local.get $2 i32.eq @@ -5839,9 +5720,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 f64.load offset=8 - local.get $7 + local.get $6 f64.load i32.const 2 global.set $~argumentsLength @@ -5882,14 +5763,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 f64.load f64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 f64.store local.get $2 @@ -6068,13 +5949,14 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $9 f64) + (local $10 f64) + (local $11 f64) (local $12 i32) (local $13 i32) - (local $14 f64) - (local $15 f64) + (local $14 i32) + (local $15 i32) + (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -6088,11 +5970,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -6100,17 +5981,17 @@ end local.get $0 f64.load - local.set $15 + local.set $11 local.get $0 f64.load offset=8 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -6119,21 +6000,20 @@ local.tee $1 select f64.store - local.get $15 - local.get $14 - local.get $1 - select - local.set $15 local.get $0 f64.load offset=16 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -6143,25 +6023,25 @@ select f64.store offset=8 local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $15 + local.set $10 local.get $0 f64.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -6171,8 +6051,8 @@ select f64.store local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f64.store offset=8 @@ -6180,7 +6060,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -6192,52 +6072,68 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $12 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $11 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 3 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $13 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -6246,32 +6142,32 @@ if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 - local.get $13 + local.get $7 + local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -6280,68 +6176,66 @@ i32.lt_s if local.get $0 - local.get $6 - local.get $13 - local.get $6 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $13 + local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $16 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $11 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -6349,26 +6243,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $10 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -6377,14 +6271,14 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -6396,7 +6290,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -6408,13 +6302,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -6425,9 +6319,9 @@ br $for-loop|4 end end - local.get $10 + local.get $15 call $~lib/rt/tlsf/__free - local.get $12 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) @@ -6491,13 +6385,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -6719,22 +6613,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -6853,18 +6747,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -6876,7 +6770,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -6888,7 +6782,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -6913,8 +6807,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -6928,11 +6822,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -6940,87 +6833,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -7035,16 +6927,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -7053,7 +6953,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -7064,50 +6964,58 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -7115,23 +7023,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -7141,11 +7049,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -7155,33 +7063,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -7189,27 +7095,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -7217,15 +7123,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -7236,7 +7142,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -7248,13 +7154,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -7265,9 +7171,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -7286,13 +7192,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -7514,22 +7420,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -7648,18 +7554,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -7671,7 +7577,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -7683,7 +7589,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -7708,8 +7614,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -7723,11 +7629,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -7735,87 +7640,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -7830,16 +7734,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -7848,7 +7760,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -7859,50 +7771,58 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -7910,23 +7830,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -7936,11 +7856,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -7950,33 +7870,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -7984,27 +7902,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -8012,15 +7930,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -8031,7 +7949,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -8043,13 +7961,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -8060,9 +7978,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -8085,28 +8003,28 @@ call $~lib/math/NativeMath.seedRandom end global.get $~lib/math/random_state0_64 - local.set $0 + local.set $1 global.get $~lib/math/random_state1_64 - local.tee $1 + local.tee $0 global.set $~lib/math/random_state0_64 - local.get $1 local.get $0 + local.get $1 i64.const 23 i64.shl - local.get $0 + local.get $1 i64.xor - local.tee $0 + local.tee $1 i64.const 17 i64.shr_u - local.get $0 + local.get $1 i64.xor i64.xor - local.get $1 + local.get $0 i64.const 26 i64.shr_u i64.xor global.set $~lib/math/random_state1_64 - local.get $1 + local.get $0 i64.const 12 i64.shr_u i64.const 4607182418800017408 @@ -8151,46 +8069,46 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if global.get $~lib/memory/__stack_pointer - local.tee $6 - local.get $8 + local.tee $3 + local.get $7 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $6 i32.load - local.tee $3 + local.tee $5 i32.store + local.get $3 local.get $6 - local.get $5 i32.load offset=4 local.tee $6 i32.store offset=4 local.get $6 - local.set $5 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + local.get $5 local.get $6 local.get $4 i32.load @@ -8198,12 +8116,12 @@ i32.const 0 i32.le_s if - local.get $3 - local.set $5 - local.get $6 + local.get $5 local.set $3 + local.get $6 + local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $6 @@ -8220,12 +8138,12 @@ local.get $0 i32.add i32.load - local.tee $7 + local.tee $8 i32.store i32.const 2 global.set $~argumentsLength - local.get $7 - local.get $3 + local.get $8 + local.get $5 local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -8237,7 +8155,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store offset=8 local.get $6 i32.const 1 @@ -8252,7 +8170,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $5 i32.store offset=8 loop $while-continue|2 local.get $1 @@ -8267,12 +8185,12 @@ local.get $0 i32.add i32.load - local.tee $3 + local.tee $5 i32.store i32.const 2 global.set $~argumentsLength - local.get $3 local.get $5 + local.get $3 local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -8284,7 +8202,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $5 i32.store offset=4 local.get $6 i32.const 1 @@ -8299,12 +8217,12 @@ i32.shl local.get $0 i32.add - local.get $5 + local.get $3 i32.store offset=4 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -8341,7 +8259,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -8358,10 +8276,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load i32.store @@ -8373,7 +8291,7 @@ local.get $6 i32.gt_s if - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 2 @@ -8492,10 +8410,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $6 i64.const 0 i64.store - local.get $5 + local.get $6 i32.const 0 i32.store offset=8 block $folding-inner0 @@ -8520,83 +8438,83 @@ br $break|0 end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 local.get $0 i32.load - local.tee $1 + local.tee $3 i32.store - local.get $4 + local.get $1 local.get $0 i32.load offset=4 - local.tee $4 + local.tee $1 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $1 + local.get $3 + local.get $3 local.get $1 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.tee $4 select i32.store global.get $~lib/memory/__stack_pointer + local.get $3 local.get $1 local.get $4 - local.get $3 select local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $4 + local.tee $3 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $3 local.get $1 local.get $1 - local.get $4 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $3 + local.tee $4 select i32.store offset=4 local.get $0 local.get $1 - local.get $4 local.get $3 + local.get $4 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 local.get $0 i32.load - local.tee $1 + local.tee $3 i32.store offset=8 - local.get $4 + local.get $1 local.get $0 i32.load offset=4 - local.tee $4 + local.tee $1 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $1 + local.get $3 + local.get $3 local.get $1 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -8606,8 +8524,8 @@ select i32.store local.get $0 + local.get $3 local.get $1 - local.get $4 local.get $2 select i32.store offset=4 @@ -8630,16 +8548,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.tee $9 - local.get $5 + local.get $7 i32.add local.set $10 - i32.const 0 - local.set $5 loop $for-loop|1 local.get $5 local.get $6 @@ -8659,10 +8585,18 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add local.set $11 local.get $0 i32.const 0 @@ -8929,15 +8863,14 @@ (local $5 i32) (local $6 i32) local.get $1 - i32.const 0 - i32.const 0 + i32.eqz local.get $0 + i32.eqz local.get $0 local.get $1 i32.eq - select - select - i32.eqz + i32.or + i32.or if i32.const 0 return @@ -8982,7 +8915,7 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $6 local.get $5 local.get $5 @@ -8992,8 +8925,7 @@ local.tee $3 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 local.get $0 @@ -9030,14 +8962,14 @@ if local.get $0 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $2 i32.ne if - local.get $2 local.get $4 + local.get $2 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -9087,7 +9019,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -9101,32 +9033,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -9143,29 +9074,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -9181,25 +9112,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - 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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + block $__inlined_func$~lib/string/String#concat (result i32) + 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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 20 i32.sub @@ -9208,7 +9139,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -9217,9 +9148,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -9227,31 +9158,30 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $2 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -9393,47 +9323,46 @@ local.get $0 local.get $1 local.get $1 - local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -9452,35 +9381,35 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $0 - 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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=12 + i32.const 0 + local.set $0 + 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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -9489,16 +9418,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - local.get $3 + local.get $7 i32.eqz if - local.get $4 + local.get $3 i32.load call $~lib/util/number/itoa32 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9506,92 +9433,91 @@ br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 - i32.add local.get $6 + i32.add + local.get $2 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $4 if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add local.get $1 - local.get $5 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 - local.get $5 + local.get $0 + local.get $4 i32.add - local.set $2 + local.set $0 end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 - local.get $2 + local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.tee $1 + local.tee $0 i32.gt_s if + local.get $6 local.get $0 - local.get $1 call $~lib/string/String#substring - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9602,8 +9528,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -9621,47 +9547,46 @@ local.get $0 local.get $1 local.get $1 - local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -9678,35 +9603,35 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $0 - 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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $3 local.get $0 + i32.load offset=12 + i32.const 0 + local.set $0 + 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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -9715,16 +9640,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - local.get $3 + local.get $7 i32.eqz if - local.get $4 + local.get $3 i32.load call $~lib/util/number/utoa32 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9732,92 +9655,91 @@ br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 - i32.add local.get $6 + i32.add + local.get $2 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $4 if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add local.get $1 - local.get $5 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 - local.get $5 + local.get $0 + local.get $4 i32.add - local.set $2 + local.set $0 end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 - local.get $2 + local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.tee $1 + local.tee $0 i32.gt_s if + local.get $6 local.get $0 - local.get $1 call $~lib/string/String#substring - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -9828,84 +9750,83 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 end - local.get $0 ) (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) (local $6 i32) (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i64) (local $13 i64) local.get $2 local.get $1 i64.sub - local.set $10 + local.set $12 local.get $2 i64.const 1 i32.const 0 local.get $3 i32.sub - local.tee $11 + local.tee $10 i64.extend_i32_s local.tee $1 i64.shl - local.tee $12 + local.tee $13 i64.const 1 i64.sub - local.tee $13 + local.tee $11 i64.and local.set $7 local.get $2 local.get $1 i64.shr_u i32.wrap_i64 + local.tee $3 local.tee $6 - local.set $3 - local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $6 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $6 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $6 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $6 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $6 i32.const 100000000 i32.ge_u i32.add @@ -9934,107 +9855,107 @@ i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $6 + local.get $3 i32.const 1000000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 - local.set $3 - i32.const 0 + local.get $3 local.set $6 + i32.const 0 + local.set $3 br $break|1 end i32.const 0 - local.set $3 + local.set $6 end - local.get $3 local.get $5 + local.get $6 i32.or if local.get $5 @@ -10047,7 +9968,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -10058,16 +9979,16 @@ i32.const 1 i32.sub local.set $9 + local.get $4 local.get $7 - local.get $6 + local.get $3 i64.extend_i32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $4 - i64.le_u + i64.ge_u if local.get $9 global.get $~lib/util/number/_K @@ -10079,7 +10000,7 @@ i32.const 12832 i32.add i64.load32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl local.set $2 @@ -10090,44 +10011,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $6 loop $while-continue|3 + local.get $1 + local.get $12 + i64.lt_u local.get $2 local.get $4 local.get $1 i64.sub i64.le_u - i32.const 0 - local.get $1 - local.get $10 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 - local.get $10 + local.get $12 local.get $1 i64.sub local.get $1 local.get $2 i64.add local.tee $7 - local.get $10 + local.get $12 i64.sub i64.gt_u local.get $7 - local.get $10 + local.get $12 i64.lt_u - select + i32.or else i32.const 0 end if - local.get $3 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 local.get $1 local.get $2 i64.add @@ -10135,8 +10054,8 @@ br $while-continue|3 end end + local.get $0 local.get $6 - local.get $3 i32.store16 local.get $5 return @@ -10144,7 +10063,7 @@ br $while-continue|0 end end - loop $while-continue|4 + loop $while-continue|4 (result i32) local.get $4 i64.const 10 i64.mul @@ -10153,7 +10072,7 @@ i64.const 10 i64.mul local.tee $1 - local.get $11 + local.get $10 i64.extend_i32_s i64.shr_u local.tee $2 @@ -10185,93 +10104,88 @@ i32.const 1 i32.sub local.set $9 - local.get $4 local.get $1 - local.get $13 + local.get $11 i64.and local.tee $7 - i64.le_u - br_if $while-continue|4 - end - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 12832 - i32.add - i64.load32_u - local.get $10 - i64.mul - local.set $2 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $6 - i32.load16_u - local.set $3 - loop $while-continue|6 - local.get $12 local.get $4 - local.get $1 - i64.sub - i64.le_u + i64.ge_u + br_if $while-continue|4 + local.get $9 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + local.set $1 i32.const 0 - local.get $1 - local.get $2 - i64.lt_u - select - if (result i32) - i32.const 1 - local.get $2 - local.get $1 - i64.sub + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 12832 + i32.add + i64.load32_u + local.get $12 + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $6 + loop $while-continue|6 local.get $1 - local.get $12 - i64.add - local.tee $7 - local.get $2 - i64.sub - i64.gt_u local.get $2 - local.get $7 - i64.gt_u - select - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.sub - local.set $3 + i64.lt_u + local.get $13 + local.get $4 local.get $1 - local.get $12 - i64.add - local.set $1 - br $while-continue|6 + i64.sub + i64.le_u + i32.and + if (result i32) + local.get $2 + local.get $1 + i64.sub + local.get $1 + local.get $13 + i64.add + local.tee $7 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $7 + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $6 + i32.store16 + local.get $5 end - local.get $6 - local.get $3 - i32.store16 - local.get $5 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -10290,18 +10204,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -10318,27 +10231,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -10360,19 +10272,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -10389,7 +10300,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -10407,7 +10318,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -10418,24 +10329,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -10481,20 +10391,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -10517,20 +10424,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -10538,63 +10444,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -10613,18 +10516,20 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) + (local $15 i64) + (local $16 i64) local.get $1 f64.const 0 f64.lt - local.tee $8 + local.tee $3 if (result f64) local.get $0 i32.const 45 @@ -10641,40 +10546,38 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.set $3 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub local.get $2 i64.const 4503599627370495 i64.and - local.get $3 + local.get $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl i64.add - local.set $2 - local.get $3 - i32.const 1 - local.get $3 - select - i32.const 1075 - i32.sub - local.tee $3 - i32.const 1 - i32.sub - local.get $2 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $5 + local.tee $4 i64.clz i32.wrap_i64 - local.tee $7 + local.tee $8 i32.sub - local.set $9 - local.get $5 - local.get $7 + local.set $10 + local.get $4 + local.get $8 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -10684,25 +10587,25 @@ i64.eq i32.const 1 i32.add - local.tee $7 + local.tee $8 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $3 - local.get $7 - i32.sub local.get $9 + local.get $8 + i32.sub + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $9 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $8 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -10711,9 +10614,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $3 + local.tee $9 local.get $1 - local.get $3 + local.get $9 f64.convert_i32_s f64.ne i32.add @@ -10721,18 +10624,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $3 + local.tee $9 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $7 + local.get $10 i32.const 11960 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $3 + local.get $9 i32.const 1 i32.shl i32.const 12656 @@ -10750,55 +10653,78 @@ local.get $2 i64.const 32 i64.shr_u - local.tee $14 - global.get $~lib/util/number/_frc_pow local.tee $5 + global.get $~lib/util/number/_frc_pow + local.tee $7 i64.const 4294967295 i64.and + local.tee $12 local.tee $2 - local.tee $4 i64.mul - local.get $4 + local.get $2 local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u - local.tee $5 local.set $13 global.get $~lib/util/number/_frc_plus local.tee $4 i64.const 4294967295 i64.and - local.set $6 + local.set $2 local.get $4 i64.const 32 i64.shr_u - local.tee $10 - local.get $2 + local.tee $6 + local.get $12 i64.mul local.get $2 - local.get $6 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add + local.set $14 + global.get $~lib/util/number/_frc_minus + local.tee $15 + i64.const 4294967295 + i64.and local.set $4 - local.get $5 - local.get $10 + local.get $15 + i64.const 32 + i64.shr_u + local.tee $15 + local.get $12 i64.mul local.get $4 + local.get $12 + i64.mul i64.const 32 i64.shr_u i64.add + local.set $12 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 local.get $5 - local.get $6 + local.get $7 + i64.const 32 + i64.shr_u + local.tee $16 + local.tee $7 i64.mul - local.get $4 + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $11 + i64.mul + local.get $13 i64.const 4294967295 i64.and i64.add @@ -10807,44 +10733,17 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.set $4 - global.get $~lib/util/number/_frc_minus - local.tee $6 - i64.const 4294967295 - i64.and - local.set $10 local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $2 - i64.mul - local.get $2 - local.get $10 + local.get $16 i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $2 - local.get $8 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $13 local.get $14 - i64.mul - local.get $12 i64.const 32 i64.shr_u i64.add - local.get $11 - local.get $13 + local.get $2 + local.get $16 i64.mul - local.get $12 + local.get $14 i64.const 4294967295 i64.and i64.add @@ -10853,24 +10752,26 @@ i64.const 32 i64.shr_u i64.add - local.get $4 + i64.const 1 + i64.sub + local.tee $2 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $8 i32.add i32.const -64 i32.sub - local.get $4 - local.get $5 - local.get $6 - i64.mul local.get $2 + local.get $15 + local.get $16 + i64.mul + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $5 - local.get $10 + local.get $4 + local.get $16 i64.mul - local.get $2 + local.get $12 i64.const 4294967295 i64.and i64.add @@ -10882,13 +10783,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $3 call $~lib/util/number/genDigits - local.get $8 + local.get $3 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $3 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -10962,38 +10863,36 @@ call $~lib/util/number/dtoa_core ) (func $~lib/array/Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 f64) + (local $1 f64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + block $__inlined_func$~lib/util/string/joinFloatArray (result i32) + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=12 + i32.const 0 + local.set $0 + 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 15652 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -11002,29 +10901,28 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end block $folding-inner0 - local.get $3 + local.get $7 i32.eqz if - local.get $4 - f64.load - local.set $2 - 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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/dtoa - local.get $2 + block $__inlined_func$~lib/util/number/dtoa (result i32) + local.get $5 + f64.load + local.set $1 + 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 15652 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 f64.const 0 f64.eq if @@ -11033,17 +10931,16 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11760 - local.set $0 br $__inlined_func$~lib/util/number/dtoa end - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.sub f64.const 0 f64.ne if - local.get $2 - local.get $2 + local.get $1 + local.get $1 f64.ne if global.get $~lib/memory/__stack_pointer @@ -11051,7 +10948,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 11792 - local.set $0 br $__inlined_func$~lib/util/number/dtoa end global.get $~lib/memory/__stack_pointer @@ -11060,109 +10956,110 @@ global.set $~lib/memory/__stack_pointer i32.const 11824 i32.const 11872 - local.get $2 + local.get $1 f64.const 0 f64.lt select - local.set $0 br $__inlined_func$~lib/util/number/dtoa end i32.const 11904 - local.get $2 + local.get $1 call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 11904 - local.get $1 + local.get $0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 end + local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 11724 i32.load i32.const 1 i32.shr_u - local.tee $5 + local.tee $3 i32.const 28 i32.add i32.mul i32.const 28 i32.add - local.tee $7 + local.tee $4 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $6 + i32.add + local.get $2 i32.const 3 i32.shl - local.get $4 + local.get $5 i32.add f64.load call $~lib/util/number/dtoa_buffered local.get $0 i32.add local.set $0 - local.get $5 + local.get $3 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add i32.const 11728 - local.get $5 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $3 i32.add local.set $0 end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 + local.get $4 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 3 i32.shl - local.get $4 + local.get $5 i32.add f64.load call $~lib/util/number/dtoa_buffered @@ -11171,7 +11068,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $6 local.get $0 call $~lib/string/String#substring local.set $0 @@ -11181,16 +11078,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $6 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 return end i32.const 32064 @@ -11207,37 +11103,37 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=12 - local.set $5 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray + block $__inlined_func$~lib/util/string/joinStringArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i32.const 0 + i32.store offset=8 local.get $5 i32.const 1 i32.sub @@ -11250,63 +11146,62 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinStringArray end local.get $6 i32.eqz if global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $7 - i32.load local.tee $0 + local.get $4 + i32.load + local.tee $1 i32.store local.get $0 - i32.const 9232 - local.get $0 - select - local.set $0 - local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 9232 + local.get $1 + select br $__inlined_func$~lib/util/string/joinStringArray end loop $for-loop|0 - local.get $3 + local.get $0 local.get $5 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add i32.load - local.tee $4 + local.tee $7 i32.store offset=4 - local.get $4 + local.get $7 if - local.get $4 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.get $0 + local.get $2 i32.add - local.set $0 + local.set $2 end - local.get $3 + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer + local.get $2 local.get $6 local.get $1 i32.const 20 @@ -11314,76 +11209,75 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $2 i32.mul - local.get $0 i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store offset=8 i32.const 0 - local.set $3 + local.set $0 loop $for-loop|1 - local.get $3 + local.get $0 local.get $6 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add i32.load - local.tee $4 + local.tee $7 i32.store offset=4 - local.get $4 + local.get $7 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add - local.get $4 - local.get $4 + local.get $7 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $7 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 - local.get $4 + local.get $3 + local.get $7 i32.add - local.set $2 + local.set $3 end - local.get $5 + local.get $2 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add local.get $1 - local.get $5 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $2 - local.get $5 + local.get $3 i32.add - local.set $2 + local.set $3 end - local.get $3 + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|1 end end @@ -11391,20 +11285,20 @@ local.get $6 i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add i32.load - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -11418,8 +11312,8 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 end - local.get $0 ) (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) @@ -11427,39 +11321,37 @@ (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=12 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinReferenceArray + block $__inlined_func$~lib/util/string/joinReferenceArray (result i32) local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 0 + i32.store offset=8 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.const 0 i32.lt_s if @@ -11468,15 +11360,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray end - local.get $2 + local.get $3 i32.eqz if global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $1 + local.get $2 i32.load local.tee $1 i32.store @@ -11488,7 +11379,6 @@ i32.const 9232 local.get $1 select - local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray end i32.const 9232 @@ -11500,35 +11390,35 @@ i32.load i32.const 1 i32.shr_u - local.set $5 + local.set $4 loop $for-loop|0 - local.get $2 + local.get $1 local.get $3 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load - local.tee $4 + local.tee $5 i32.store - local.get $4 + local.get $5 if global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i32.const 13072 i32.store offset=8 - local.get $4 + local.get $5 local.get $0 i32.const 13072 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $5 + local.get $4 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -11537,18 +11427,18 @@ local.tee $0 i32.store offset=4 end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load local.tee $1 @@ -11557,9 +11447,9 @@ if global.get $~lib/memory/__stack_pointer local.tee $1 + local.get $1 i32.const 13072 i32.store offset=8 - local.get $1 local.get $0 i32.const 13072 call $~lib/string/String.__concat @@ -11570,8 +11460,8 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -11659,15 +11549,14 @@ i32.add end end + local.get $2 + i32.add local.set $1 local.get $0 local.get $3 local.get $1 - local.get $2 - i32.add - local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $1 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -11690,59 +11579,59 @@ local.get $1 i32.const 65535 i32.and - local.tee $2 local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -11904,7 +11793,6 @@ local.get $0 local.get $3 local.get $2 - local.tee $0 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -11959,10 +11847,10 @@ i32.add end end - local.tee $0 + local.tee $2 call $~lib/util/number/utoa64_dec_lut end - local.get $0 + local.get $2 ) (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) @@ -11972,31 +11860,27 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=12 + 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 15652 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -12005,28 +11889,27 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $3 + local.get $7 i32.eqz if - local.get $4 - i64.load - local.set $2 - 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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $4 + i64.load + local.set $2 + 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 15652 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 i64.eqz if @@ -12035,7 +11918,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9824 - local.set $0 br $__inlined_func$~lib/util/number/utoa64 end local.get $2 @@ -12045,48 +11927,48 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.wrap_i64 - local.tee $3 local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -12097,10 +11979,10 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 local.get $3 + local.get $0 local.get $1 call $~lib/util/number/utoa32_dec_lut else @@ -12155,107 +12037,109 @@ i32.add end end - local.tee $1 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 + local.get $3 local.get $2 - local.get $1 + local.get $0 call $~lib/util/number/utoa64_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 end + local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 9516 i32.load i32.const 1 i32.shr_u - local.tee $5 + local.tee $0 i32.const 20 i32.add i32.mul i32.const 20 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.store loop $for-loop|0 local.get $3 - local.get $6 - i32.gt_s + local.get $7 + i32.lt_s if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $6 + i32.add + local.get $3 i32.const 3 i32.shl local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 - local.get $5 + local.set $1 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add i32.const 9520 - local.get $5 + local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $1 i32.add - local.set $0 + local.set $1 end - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 + local.set $3 br $for-loop|0 end end - local.get $7 - local.get $0 + local.get $5 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 3 i32.shl local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add local.tee $0 i32.gt_s if - local.get $1 + local.get $6 local.get $0 call $~lib/string/String#substring local.set $0 @@ -12265,16 +12149,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $6 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 return end i32.const 32064 @@ -12291,7 +12174,7 @@ local.get $1 i64.const 0 i64.lt_s - local.tee $3 + local.tee $2 if local.get $0 i32.const 45 @@ -12305,7 +12188,7 @@ i64.const 10 i64.lt_u if - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 @@ -12314,7 +12197,7 @@ i64.const 48 i64.or i64.store16 - local.get $3 + local.get $2 i32.const 1 i32.add return @@ -12325,60 +12208,59 @@ if local.get $1 i32.wrap_i64 + local.tee $3 local.tee $4 - local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $4 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $4 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $4 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $4 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $4 i32.const 100000000 i32.ge_u i32.add end end + local.get $2 + i32.add local.set $2 local.get $0 - local.get $4 - local.get $2 local.get $3 - i32.add - local.tee $0 + local.get $2 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -12433,353 +12315,12 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $0 + local.tee $2 call $~lib/util/number/utoa64_dec_lut end - local.get $0 - ) - (func $~lib/array/Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=12 - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9232 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - block $folding-inner0 - local.get $4 - i32.eqz - if - local.get $5 - i64.load - i64.extend32_s - local.set $2 - 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 15652 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9824 - local.set $0 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $2 - i64.sub - local.get $2 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $3 - select - local.tee $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $6 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $3 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $6 - local.get $1 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $2 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $2 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $2 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $3 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa64_dec_lut - end - local.get $3 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 9516 - i32.load - i32.const 1 - i32.shr_u - local.tee $7 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $6 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_s - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $3 - i32.const 3 - i32.shl - local.get $5 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $7 - if - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - i32.const 9520 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $7 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $6 - local.get $0 - i32.const 1 - i32.shl - local.get $1 - i32.add - local.get $4 - i32.const 3 - i32.shl - local.get $5 - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - return - end - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -12802,59 +12343,59 @@ local.get $1 i32.const 255 i32.and - local.tee $2 local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -12863,35 +12404,35 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $0 - 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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $3 local.get $0 + i32.load offset=12 + i32.const 0 + local.set $0 + 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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -12900,16 +12441,14 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end - local.get $3 + local.get $7 i32.eqz if - local.get $4 + local.get $3 i32.load8_u call $~lib/util/number/utoa32 - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -12917,88 +12456,87 @@ br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $5 + local.tee $4 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $6 i32.store loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s + local.get $2 + local.get $7 + i32.lt_s if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 - i32.add - local.get $4 local.get $6 i32.add + local.get $2 + local.get $3 + i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $4 if - local.get $2 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add local.get $1 - local.get $5 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 - local.get $5 + local.get $0 + local.get $4 i32.add - local.set $2 + local.set $0 end - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|0 end end - local.get $7 - local.get $2 + local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $6 i32.add local.get $3 - local.get $4 + local.get $7 i32.add i32.load8_u call $~lib/util/number/itoa_buffered - local.get $2 + local.get $0 i32.add - local.tee $1 + local.tee $0 i32.gt_s if + local.get $6 local.get $0 - local.get $1 call $~lib/string/String#substring - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -13009,8 +12547,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 end - local.get $0 ) (func $start:std/array~anonymous|53 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -13078,13 +12616,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -13284,20 +12822,20 @@ i32.add local.tee $3 i32.load8_u - local.set $6 + local.set $5 local.get $3 local.get $0 local.get $2 i32.add - local.tee $5 + local.tee $3 i32.load8_u i32.store8 local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store8 local.get $2 i32.const 1 @@ -13459,8 +12997,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -13474,11 +13012,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -13486,87 +13023,86 @@ end local.get $0 i32.load8_u - local.set $3 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store8 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load8_u offset=2 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store8 offset=1 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $3 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -13581,16 +13117,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -13599,7 +13143,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -13610,48 +13154,56 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -13659,23 +13211,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -13685,11 +13237,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -13699,33 +13251,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -13733,27 +13283,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -13761,15 +13311,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -13780,7 +13330,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -13792,13 +13342,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -13809,9 +13359,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) @@ -13835,10 +13385,13 @@ i32.add local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $2 i32.store offset=12 @@ -13871,18 +13424,18 @@ i32.const 2 i32.shl i32.add - local.set $2 + local.set $3 loop $while-continue|0 local.get $1 - local.get $2 + local.get $3 i32.lt_u if local.get $1 i32.load - local.tee $3 + local.tee $2 if - local.get $3 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $1 i32.const 4 @@ -13893,27 +13446,28 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $invalid - block $std/array/ArrayStr - block $std/array/Proxy - block $std/array/Dim - block $std/array/Ref - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner3 $folding-inner4 $std/array/Ref $folding-inner3 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner4 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner4 $folding-inner4 $std/array/ArrayStr $folding-inner2 $invalid - end - return + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $invalid + block $std/array/ArrayStr + block $std/array/Proxy + block $std/array/Dim + block $std/array/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner3 $folding-inner3 $std/array/Ref $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid end return end @@ -13923,33 +13477,34 @@ end return end - local.get $0 - call $~lib/array/Array~visit return end - unreachable + local.get $0 + call $~lib/array/Array~visit + return end - local.get $0 - call $~lib/array/Array~visit - return + unreachable end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + call $~lib/array/Array~visit return end local.get $0 - i32.load + i32.load offset=4 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~setArgumentsLength (param $0 i32) local.get $0 @@ -14160,25 +13715,25 @@ i32.gt_s if (result i32) global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $6 local.get $4 i32.const 2 i32.shl local.get $0 i32.add - local.tee $6 - i32.load offset=4 local.tee $7 + i32.load offset=4 + local.tee $5 i32.store - local.get $5 local.get $6 + local.get $7 i32.load - local.tee $5 + local.tee $6 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $5 + local.get $6 local.get $3 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -14284,16 +13839,229 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) + (func $std/array/assertStableSortedForComplexObjects + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i64.const 0 + i64.store offset=16 + local.get $3 + global.get $std/array/inputStabArr + local.tee $4 + i32.store offset=8 + local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + i32.const 0 + local.get $4 + i32.load offset=12 + local.tee $5 + local.get $5 + i32.const 0 + i32.gt_s + select + local.set $6 + local.get $2 + local.get $5 + local.get $6 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $5 + i32.const 2 + i32.const 20 + i32.const 0 + call $~lib/rt/__newArray + local.tee $7 + i32.store + local.get $7 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.set $4 + local.get $5 + i32.const 2 + i32.shl + local.set $5 + loop $while-continue|0 + local.get $0 + local.get $5 + i32.lt_u + if + local.get $0 + local.get $2 + i32.add + local.get $0 + local.get $4 + i32.add + i32.load + local.tee $6 + i32.store + local.get $6 + if + local.get $7 + local.get $6 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $7 + i32.store + local.get $0 + i32.const 8880 + i32.store offset=4 + local.get $7 + i32.load offset=4 + local.get $7 + i32.load offset=12 + i32.const 8880 + call $~lib/util/sort/SORT + local.get $3 + local.get $7 + i32.store offset=12 + i32.const 1 + local.set $0 + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.tee $2 + i32.store + local.get $2 + i32.load offset=12 + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + block $for-break0 + global.get $~lib/memory/__stack_pointer + local.get $7 + local.get $1 + call $~lib/array/Array#__get + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.tee $4 + i32.store offset=20 + local.get $3 + i32.load + local.get $4 + i32.load + i32.ne + if (result i32) + i32.const 1 + else + local.get $3 + i32.load offset=4 + local.get $4 + i32.load offset=4 + i32.ne + end + if + i32.const 0 + local.set $0 + br $for-break0 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1042 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -14536,30 +14304,9 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 9520 - i32.store - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $0 - local.get $1 - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14567,17 +14314,36 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 + local.tee $2 i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> + i32.store + local.get $2 + i32.const 9520 + i32.store + block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> (result i32) local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=12 + local.get $2 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 0 + i32.store offset=8 i32.const 1 i32.sub - local.tee $1 + local.tee $4 i32.const 0 i32.lt_s if @@ -14586,14 +14352,13 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $1 + local.get $4 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.load local.tee $0 i32.store @@ -14604,7 +14369,6 @@ else i32.const 9232 end - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -14624,28 +14388,28 @@ loop $for-loop|0 local.get $1 local.get $4 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.tee $3 + local.tee $6 i32.store - local.get $3 + local.get $6 if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $6 call $~lib/array/Array#toString - local.set $3 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $6 i32.store offset=8 local.get $0 - local.get $3 + local.get $6 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -14659,33 +14423,33 @@ local.tee $0 i32.store offset=4 end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/array/Array#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -14694,12 +14458,12 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 return end i32.const 32064 @@ -14714,14 +14478,16 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (local $4 i64) + (local $5 f64) + (local $6 f32) (local $7 i32) (local $8 i32) - (local $9 f64) + (local $9 i32) (local $10 i32) - (local $11 f32) + (local $11 i32) + (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 172 i32.sub @@ -14884,10 +14650,6 @@ i32.store local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -14905,10 +14667,12 @@ local.get $0 local.get $2 i32.store - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end local.get $0 local.get $2 i32.store offset=4 @@ -14952,9 +14716,9 @@ i32.const 6 i32.const 1696 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 1 i32.const 1 i32.const 3 @@ -14965,12 +14729,12 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -14981,7 +14745,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 0 i32.const 2147483647 @@ -14992,12 +14756,12 @@ i32.const 6 i32.const 1760 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15008,7 +14772,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 0 i32.const -3 @@ -15019,12 +14783,12 @@ i32.const 6 i32.const 1792 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15035,7 +14799,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 i32.const -2 i32.const 2147483647 @@ -15046,12 +14810,12 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15062,7 +14826,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 1 i32.const 0 @@ -15073,12 +14837,12 @@ i32.const 6 i32.const 1856 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -15095,43 +14859,43 @@ i32.const 7 i32.const 1888 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $0 + local.get $1 i32.load offset=4 - local.set $4 + local.set $2 i32.const 1 - local.get $0 + local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.const 1 i32.gt_s select - local.set $1 + local.set $0 i32.const 3 - local.get $2 - local.get $2 + local.get $7 + local.get $7 i32.const 3 i32.gt_s select - local.set $2 + local.set $7 loop $for-loop|0 - local.get $1 - local.get $2 + local.get $0 + local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -15140,12 +14904,12 @@ i32.const 7 i32.const 1936 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 local.get $0 + i32.store offset=8 local.get $1 + local.get $0 call $std/array/isArraysEqual i32.eqz if @@ -15156,36 +14920,35 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.tee $1 + local.get $1 i32.load offset=4 - local.set $0 + local.set $2 i32.const 0 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.const 0 i32.gt_s select - local.set $5 - loop $for-loop|03 - local.get $2 - local.get $5 - i32.gt_s + local.set $0 + loop $for-loop|01 + local.get $0 + local.get $7 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|03 + local.set $0 + br $for-loop|01 end end i32.const 5 @@ -15211,35 +14974,35 @@ end local.get $1 i32.load offset=4 - local.set $4 + local.set $2 i32.const 0 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.const 0 i32.gt_s select local.set $0 - local.get $2 + local.get $7 i32.const 3 i32.sub - local.tee $2 + local.tee $7 i32.const 0 - local.get $2 + local.get $7 i32.const 0 i32.gt_s select - local.set $2 - loop $for-loop|05 + local.set $7 + loop $for-loop|03 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.const 1 i32.store @@ -15247,7 +15010,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|05 + br $for-loop|03 end end i32.const 5 @@ -15273,10 +15036,10 @@ end local.get $1 i32.load offset=4 - local.set $4 + local.set $2 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 2 i32.sub local.tee $0 @@ -15285,24 +15048,24 @@ i32.const 0 i32.gt_s select - local.set $5 - loop $for-loop|07 - local.get $2 - local.get $5 - i32.gt_s + local.set $0 + loop $for-loop|05 + local.get $0 + local.get $7 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.const 2 i32.store - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|07 + local.set $0 + br $for-loop|05 end end i32.const 5 @@ -15328,32 +15091,32 @@ end local.get $1 i32.load offset=4 - local.set $4 + local.set $2 i32.const 1 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.const 1 i32.gt_s select local.set $0 i32.const 0 - local.get $2 - local.get $2 + local.get $7 + local.get $7 i32.const 0 i32.gt_s select - local.set $2 - loop $for-loop|09 + local.set $7 + loop $for-loop|07 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.const 0 i32.store @@ -15361,7 +15124,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|09 + br $for-loop|07 end end i32.const 5 @@ -15847,23 +15610,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $2 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - local.get $2 call $~lib/array/Array#concat local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15877,9 +15640,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.load offset=12 i32.const 3 i32.ne @@ -15908,19 +15671,19 @@ i32.const 3 i32.const 2272 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 call $~lib/array/Array#concat drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 call $std/array/internalCapacity i32.const 8 i32.ne @@ -15971,30 +15734,30 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 46 call $~lib/array/Array#push drop - local.get $2 + local.get $0 i32.const 47 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store local.get $1 - local.get $0 local.get $2 + local.get $0 call $~lib/array/Array#concat local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 call $std/array/internalCapacity i32.const 8 i32.ne @@ -16006,7 +15769,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=12 i32.const 2 i32.ne @@ -16116,9 +15879,9 @@ i32.const 3 i32.const 2304 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load offset=12 if i32.const 0 @@ -16131,15 +15894,15 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $0 + local.tee $2 i32.store offset=8 local.get $1 - local.get $2 local.get $0 + local.get $2 call $~lib/array/Array#concat - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.load offset=12 i32.const 3 i32.ne @@ -16151,7 +15914,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=12 if i32.const 0 @@ -16174,21 +15937,21 @@ i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2384 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16213,21 +15976,21 @@ i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2480 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16252,21 +16015,21 @@ i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2576 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16291,21 +16054,21 @@ i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2672 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16330,21 +16093,21 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2768 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16369,21 +16132,21 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2864 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16408,21 +16171,21 @@ i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 2960 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16447,21 +16210,21 @@ i32.const -2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3056 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16486,21 +16249,21 @@ i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3152 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16525,21 +16288,21 @@ i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3248 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16564,21 +16327,21 @@ i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3344 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16603,21 +16366,21 @@ i32.const -3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store i32.const 5 i32.const 2 i32.const 3 i32.const 3440 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -16864,13 +16627,13 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $0 i32.store - local.get $5 + local.get $0 i32.load offset=12 - local.tee $0 - i32.const 1 - i32.lt_s + local.tee $1 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -16879,28 +16642,28 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.load - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 4 i32.add - local.get $0 + local.get $1 i32.const 1 i32.sub local.tee $1 i32.const 2 i32.shl - local.tee $0 + local.tee $8 call $~lib/memory/memory.copy - local.get $0 - local.get $4 + local.get $2 + local.get $8 i32.add i32.const 0 i32.store - local.get $5 + local.get $0 local.get $1 i32.store offset=12 global.set $std/array/i @@ -17122,26 +16885,26 @@ i32.const 3 i32.const 3488 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 3 i32.const 2 i32.const 3 i32.const 3536 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17154,23 +16917,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.const 4 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3568 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17183,23 +16946,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 1 i32.const 5 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 4 i32.const 2 i32.const 3 i32.const 3600 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17212,14 +16975,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 + local.get $1 local.get $0 - local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17232,23 +16995,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3648 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17261,23 +17024,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const 2 i32.const -1 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3680 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17290,23 +17053,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.const -3 i32.const -1 call $~lib/array/Array#slice - local.tee $0 + local.tee $1 i32.store offset=16 i32.const 2 i32.const 2 i32.const 3 i32.const 3712 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $0 local.get $1 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -17318,15 +17081,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const -1 i32.const -3 call $~lib/array/Array#slice - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -17336,7 +17099,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 10 i32.const 2147483647 call $~lib/array/Array#slice @@ -17360,7 +17123,7 @@ i32.store local.get $1 i32.load offset=4 - local.set $6 + local.set $2 i32.const 0 local.set $0 local.get $1 @@ -17372,37 +17135,37 @@ local.get $1 i32.const 1 i32.shr_u - local.set $5 + local.set $7 local.get $1 i32.const 1 i32.sub - local.set $4 + local.set $1 loop $while-continue|0 local.get $0 - local.get $5 + local.get $7 i32.lt_u if local.get $0 i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add - local.tee $1 + local.tee $8 i32.load - local.set $2 + local.set $9 + local.get $8 local.get $1 - local.get $4 local.get $0 i32.sub i32.const 2 i32.shl - local.get $6 + local.get $2 i32.add - local.tee $1 + local.tee $8 i32.load i32.store - local.get $1 - local.get $2 + local.get $8 + local.get $9 i32.store local.get $0 i32.const 1 @@ -17522,23 +17285,26 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array#reverse - local.tee $2 + i32.load offset=4 + local.get $1 + i32.load offset=12 + call $~lib/util/bytes/REVERSE + local.get $1 i32.store offset=16 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 - loop $for-loop|010 + local.set $2 + loop $for-loop|08 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17557,7 +17323,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|010 + br $for-loop|08 end end global.get $~lib/memory/__stack_pointer @@ -17571,23 +17337,26 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array#reverse - local.tee $2 + i32.load offset=4 + local.get $1 + i32.load offset=12 + call $~lib/util/bytes/REVERSE + local.get $1 i32.store offset=4 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|1 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17620,23 +17389,26 @@ local.get $1 i32.store local.get $1 - call $~lib/array/Array#reverse - local.tee $2 + i32.load offset=4 + local.get $1 + i32.load offset=12 + call $~lib/util/bytes/REVERSE + local.get $1 i32.store offset=12 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|2 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17670,22 +17442,22 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=20 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|3 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17719,22 +17491,22 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=24 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|4 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17768,22 +17540,22 @@ i32.store local.get $1 call $~lib/array/Array#reverse - local.tee $2 + local.tee $1 i32.store offset=28 i32.const 0 local.set $0 - local.get $2 + local.get $1 i32.load offset=12 - local.set $1 + local.set $2 loop $for-loop|5 local.get $0 - local.get $1 + local.get $2 i32.lt_s if - local.get $2 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $2 + local.get $1 i32.load offset=12 local.get $0 i32.sub @@ -17807,52 +17579,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 + i32.const -1 + local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $1 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|011 + local.set $2 + loop $while-continue|012 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 44 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf - local.get $0 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|012 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i if @@ -17865,52 +17636,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf12 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf39 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf12 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf39 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|013 + local.set $2 + loop $while-continue|040 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf12 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf39 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|013 + br $while-continue|040 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 2 @@ -17925,52 +17695,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf14 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf41 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf14 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf41 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|015 + local.set $2 + loop $while-continue|042 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf14 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf41 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|015 + br $while-continue|042 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -17985,52 +17754,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 100 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf16 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf43 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 100 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf16 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf43 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|017 + local.set $2 + loop $while-continue|044 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf16 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf43 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|044 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -18047,7 +17815,9 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf18 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf45 local.get $1 i32.load offset=12 local.tee $2 @@ -18056,11 +17826,7 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf18 - end + br_if $__inlined_func$~lib/array/Array#indexOf45 local.get $2 i32.const 100 i32.sub @@ -18074,7 +17840,7 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|019 + loop $while-continue|046 local.get $0 local.get $2 i32.lt_s @@ -18087,12 +17853,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf18 + br_if $__inlined_func$~lib/array/Array#indexOf45 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|019 + br $while-continue|046 end end i32.const -1 @@ -18115,7 +17881,9 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf20 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf47 local.get $1 i32.load offset=12 local.tee $2 @@ -18124,11 +17892,7 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf20 - end + br_if $__inlined_func$~lib/array/Array#indexOf47 local.get $2 i32.const 2 i32.sub @@ -18142,7 +17906,7 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|021 + loop $while-continue|048 local.get $0 local.get $2 i32.lt_s @@ -18155,12 +17919,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf20 + br_if $__inlined_func$~lib/array/Array#indexOf47 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|021 + br $while-continue|048 end end i32.const -1 @@ -18183,7 +17947,9 @@ global.get $std/array/arr local.tee $1 i32.store - block $__inlined_func$~lib/array/Array#indexOf22 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#indexOf49 local.get $1 i32.load offset=12 local.tee $2 @@ -18192,11 +17958,7 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf22 - end + br_if $__inlined_func$~lib/array/Array#indexOf49 local.get $2 i32.const 4 i32.sub @@ -18210,7 +17972,7 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|023 + loop $while-continue|050 local.get $0 local.get $2 i32.lt_s @@ -18223,12 +17985,12 @@ i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf22 + br_if $__inlined_func$~lib/array/Array#indexOf49 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|050 end end i32.const -1 @@ -18249,52 +18011,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf24 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf51 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf24 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf51 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|025 + local.set $2 + loop $while-continue|052 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf24 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf51 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|025 + br $while-continue|052 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -18309,52 +18070,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf26 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf53 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 1 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf26 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf53 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|027 + local.set $2 + loop $while-continue|054 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf26 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf53 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|027 + br $while-continue|054 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -18369,52 +18129,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 2 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf28 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf55 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 2 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf28 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf55 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|029 + local.set $2 + loop $while-continue|056 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf28 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf55 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|029 + br $while-continue|056 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 3 @@ -18443,19 +18202,19 @@ block $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=12 - local.tee $4 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $7 select br_if $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|010 + loop $while-continue|057 local.get $0 - local.get $4 + local.get $7 i32.lt_s if local.get $0 @@ -18472,7 +18231,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|010 + br $while-continue|057 end end i32.const -1 @@ -18505,19 +18264,19 @@ block $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=12 - local.tee $4 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $7 select br_if $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|037 + loop $while-continue|058 local.get $0 - local.get $4 + local.get $7 i32.lt_s if local.get $0 @@ -18534,7 +18293,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|037 + br $while-continue|058 end end i32.const -1 @@ -18557,49 +18316,49 @@ i32.const 3 i32.const 4064 call $~lib/rt/__newArray - local.tee $0 + local.tee $2 i32.store offset=24 i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $2 i32.load offset=12 - local.tee $4 - local.set $2 + local.tee $0 + local.set $7 i32.const -1 local.set $1 block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $4 + local.get $0 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $2 - local.get $4 + local.get $0 + local.get $7 i32.add - local.get $4 + local.get $0 i32.const 1 i32.sub - local.get $2 - local.get $2 - local.get $4 - i32.ge_s + local.get $7 + local.get $0 + local.get $7 + i32.le_s select - local.get $2 + local.get $7 i32.const 0 i32.lt_s select - local.set $2 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|00 - local.get $2 + local.set $7 + loop $while-continue|09 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 + local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $7 i32.add i32.load i32.const 2 @@ -18608,8 +18367,8 @@ local.get $1 i32.const 1 i32.sub - local.set $2 - br $while-continue|00 + local.set $0 + br $while-continue|09 end end i32.const -1 @@ -18628,61 +18387,61 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $2 i32.load offset=12 - local.tee $4 - local.set $2 - i32.const -1 local.set $1 - block $__inlined_func$~lib/array/Array#lastIndexOf5 - local.get $4 - i32.eqz - br_if $__inlined_func$~lib/array/Array#lastIndexOf5 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf14 local.get $2 - local.get $4 + i32.load offset=12 + local.tee $7 + i32.eqz + br_if $__inlined_func$~lib/array/Array#lastIndexOf14 + local.get $1 + local.get $7 i32.add - local.get $4 + local.get $7 i32.const 1 i32.sub - local.get $2 - local.get $2 - local.get $4 + local.get $1 + local.get $1 + local.get $7 i32.ge_s select - local.get $2 + local.get $1 i32.const 0 i32.lt_s select - local.set $2 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|06 - local.get $2 + local.set $1 + loop $while-continue|015 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf5 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf14 + local.get $0 i32.const 1 i32.sub - local.set $2 - br $while-continue|06 + local.set $0 + br $while-continue|015 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18693,16 +18452,14 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf7 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf16 + local.get $2 i32.load offset=12 local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf7 - end + br_if $__inlined_func$~lib/array/Array#lastIndexOf16 local.get $1 i32.const 1 i32.sub @@ -18711,35 +18468,35 @@ i32.const 3 i32.le_s select - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 - loop $while-continue|030 - local.get $1 + local.set $1 + loop $while-continue|059 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf7 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf16 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|030 + local.set $0 + br $while-continue|059 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -18750,16 +18507,14 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf31 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf60 + local.get $2 i32.load offset=12 local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf31 - end + br_if $__inlined_func$~lib/array/Array#lastIndexOf60 local.get $1 i32.const 1 i32.sub @@ -18768,35 +18523,35 @@ i32.const 2 i32.le_s select - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 - loop $while-continue|032 - local.get $1 + local.set $1 + loop $while-continue|061 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf31 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf60 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|032 + local.set $0 + br $while-continue|061 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1552 @@ -18805,48 +18560,46 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf33 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf62 + local.get $2 i32.load offset=12 local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/array/Array#lastIndexOf33 - end + br_if $__inlined_func$~lib/array/Array#lastIndexOf62 local.get $1 i32.const 2 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $2 i32.load offset=4 - local.set $2 - loop $while-continue|034 - local.get $1 + local.set $1 + loop $while-continue|063 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf33 - local.get $1 + br_if $__inlined_func$~lib/array/Array#lastIndexOf62 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|034 + local.set $0 + br $while-continue|063 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1552 @@ -18855,25 +18608,22 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf35 - local.get $0 - local.tee $1 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/array/Array#lastIndexOf64 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $1 i32.eqz - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf35 - end - local.get $0 + br_if $__inlined_func$~lib/array/Array#lastIndexOf64 + local.get $1 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 i32.load offset=4 local.set $1 - loop $while-continue|036 + loop $while-continue|065 local.get $0 i32.const 0 i32.ge_s @@ -18886,12 +18636,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf35 + br_if $__inlined_func$~lib/array/Array#lastIndexOf64 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|065 end end i32.const -1 @@ -18910,52 +18660,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf37 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf17 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf37 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf17 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|038 + local.set $2 + loop $while-continue|018 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 44 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf37 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf17 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|038 + br $while-continue|018 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -18968,52 +18717,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf39 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf20 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf39 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf20 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|040 + local.set $2 + loop $while-continue|021 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 42 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf39 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf20 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|040 + br $while-continue|021 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19026,52 +18774,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf41 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf23 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf41 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf23 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|042 + local.set $2 + loop $while-continue|024 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 45 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf41 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf23 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|024 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.ge_s if @@ -19084,52 +18831,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 100 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf43 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf26 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 100 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf43 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf26 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|044 + local.set $2 + loop $while-continue|027 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf43 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf26 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|044 + br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.ge_s if @@ -19142,10 +18888,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - block $__inlined_func$~lib/array/Array#indexOf45 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf29 + local.get $0 i32.load offset=12 local.tee $2 i32.const -100 @@ -19153,49 +18901,45 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf45 - end + br_if $__inlined_func$~lib/array/Array#indexOf29 local.get $2 i32.const 100 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 - i32.load offset=4 local.set $1 - loop $while-continue|046 - local.get $0 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|030 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf45 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf29 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|046 + local.set $1 + br $while-continue|030 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19208,10 +18952,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - block $__inlined_func$~lib/array/Array#indexOf47 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf32 + local.get $0 i32.load offset=12 local.tee $2 i32.const -2 @@ -19219,49 +18965,45 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf47 - end + br_if $__inlined_func$~lib/array/Array#indexOf32 local.get $2 i32.const 2 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 - i32.load offset=4 local.set $1 - loop $while-continue|048 - local.get $0 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|033 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf47 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf32 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|048 + local.set $1 + br $while-continue|033 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19274,10 +19016,12 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $0 i32.store - block $__inlined_func$~lib/array/Array#indexOf49 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf35 + local.get $0 i32.load offset=12 local.tee $2 i32.const -4 @@ -19285,49 +19029,45 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf49 - end + br_if $__inlined_func$~lib/array/Array#indexOf35 local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 - local.get $1 - i32.load offset=4 local.set $1 - loop $while-continue|050 - local.get $0 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|036 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $0 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf49 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf35 + local.get $1 i32.const 1 i32.add - local.set $0 - br $while-continue|050 + local.set $1 + br $while-continue|036 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19340,52 +19080,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 0 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf51 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf38 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf51 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf38 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|052 + local.set $2 + loop $while-continue|039 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf51 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf38 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|052 + br $while-continue|039 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19398,52 +19137,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 1 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf53 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf42 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 1 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf53 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf42 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|054 + local.set $2 + loop $while-continue|043 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf53 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf42 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|043 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19456,52 +19194,51 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store i32.const 2 local.set $0 - block $__inlined_func$~lib/array/Array#indexOf55 - local.get $1 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf46 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $7 i32.const 2 i32.le_s i32.const 1 - local.get $2 + local.get $7 select - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#indexOf55 - end - local.get $1 + br_if $__inlined_func$~lib/array/Array#indexOf46 + local.get $2 i32.load offset=4 - local.set $1 - loop $while-continue|056 + local.set $2 + loop $while-continue|047 local.get $0 - local.get $2 + local.get $7 i32.lt_s if local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 43 i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf55 - local.get $0 + br_if $__inlined_func$~lib/array/Array#indexOf46 + local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|056 + br $while-continue|047 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 0 i32.lt_s if @@ -19538,12 +19275,11 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|047 + loop $while-continue|066 local.get $0 local.get $2 i32.lt_s if - i32.const 1 i32.const 1 local.get $0 i32.const 2 @@ -19551,20 +19287,20 @@ local.get $1 i32.add f32.load - local.tee $11 - local.get $11 - f32.ne - local.get $11 + local.tee $6 f32.const nan:0x400000 f32.eq - select + local.get $6 + local.get $6 + f32.ne + i32.or br_if $__inlined_func$~lib/array/Array#includes drop local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|047 + br $while-continue|066 end end i32.const 0 @@ -19604,12 +19340,11 @@ local.get $1 i32.load offset=4 local.set $1 - loop $while-continue|04857 + loop $while-continue|067 local.get $0 local.get $2 i32.lt_s if - i32.const 1 i32.const 1 local.get $0 i32.const 3 @@ -19617,20 +19352,20 @@ local.get $1 i32.add f64.load - local.tee $9 - local.get $9 - f64.ne - local.get $9 + local.tee $5 f64.const nan:0x8000000000000 f64.eq - select + local.get $5 + local.get $5 + f64.ne + i32.or br_if $__inlined_func$~lib/array/Array#includes drop local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|04857 + br $while-continue|067 end end i32.const 0 @@ -19725,9 +19460,9 @@ i32.const 3 i32.const 4176 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#splice @@ -19740,12 +19475,12 @@ i32.const 3 i32.const 4224 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19762,12 +19497,12 @@ i32.const 3 i32.const 4272 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19785,9 +19520,9 @@ i32.const 3 i32.const 4304 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 0 i32.const 0 call $~lib/array/Array#splice @@ -19800,12 +19535,12 @@ i32.const 3 i32.const 4352 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19822,12 +19557,12 @@ i32.const 3 i32.const 4384 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19845,9 +19580,9 @@ i32.const 3 i32.const 4432 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 2 i32.const 2147483647 call $~lib/array/Array#splice @@ -19860,12 +19595,12 @@ i32.const 3 i32.const 4480 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19882,12 +19617,12 @@ i32.const 3 i32.const 4512 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19905,9 +19640,9 @@ i32.const 3 i32.const 4544 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 2 i32.const 2 call $~lib/array/Array#splice @@ -19920,12 +19655,12 @@ i32.const 3 i32.const 4592 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19942,12 +19677,12 @@ i32.const 3 i32.const 4624 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19965,9 +19700,9 @@ i32.const 3 i32.const 4656 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 0 i32.const 1 call $~lib/array/Array#splice @@ -19980,12 +19715,12 @@ i32.const 3 i32.const 4704 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20002,12 +19737,12 @@ i32.const 3 i32.const 4736 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20025,9 +19760,9 @@ i32.const 3 i32.const 4784 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice @@ -20040,12 +19775,12 @@ i32.const 3 i32.const 4832 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20062,12 +19797,12 @@ i32.const 3 i32.const 4864 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20085,9 +19820,9 @@ i32.const 3 i32.const 4912 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#splice @@ -20100,12 +19835,12 @@ i32.const 3 i32.const 4960 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20122,12 +19857,12 @@ i32.const 3 i32.const 4992 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20145,9 +19880,9 @@ i32.const 3 i32.const 5024 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -2 i32.const 1 call $~lib/array/Array#splice @@ -20160,12 +19895,12 @@ i32.const 3 i32.const 5072 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20182,12 +19917,12 @@ i32.const 3 i32.const 5104 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20205,9 +19940,9 @@ i32.const 3 i32.const 5152 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -7 i32.const 1 call $~lib/array/Array#splice @@ -20220,12 +19955,12 @@ i32.const 3 i32.const 5200 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20242,12 +19977,12 @@ i32.const 3 i32.const 5232 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20265,9 +20000,9 @@ i32.const 3 i32.const 5280 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const -2 i32.const -1 call $~lib/array/Array#splice @@ -20280,12 +20015,12 @@ i32.const 3 i32.const 5328 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20302,12 +20037,12 @@ i32.const 3 i32.const 5360 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20325,9 +20060,9 @@ i32.const 3 i32.const 5408 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 1 i32.const -2 call $~lib/array/Array#splice @@ -20340,12 +20075,12 @@ i32.const 3 i32.const 5456 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20362,12 +20097,12 @@ i32.const 3 i32.const 5488 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20385,9 +20120,9 @@ i32.const 3 i32.const 5536 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 4 i32.const 0 call $~lib/array/Array#splice @@ -20400,12 +20135,12 @@ i32.const 3 i32.const 5584 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20422,12 +20157,12 @@ i32.const 3 i32.const 5616 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20445,9 +20180,9 @@ i32.const 3 i32.const 5664 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 7 i32.const 0 call $~lib/array/Array#splice @@ -20460,12 +20195,12 @@ i32.const 3 i32.const 5712 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20482,12 +20217,12 @@ i32.const 3 i32.const 5744 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20505,9 +20240,9 @@ i32.const 3 i32.const 5792 call $~lib/rt/__newArray - local.tee $2 + local.tee $0 i32.store offset=28 - local.get $2 + local.get $0 i32.const 7 i32.const 5 call $~lib/array/Array#splice @@ -20520,12 +20255,12 @@ i32.const 3 i32.const 5840 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=8 local.get $1 - local.get $0 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20542,12 +20277,12 @@ i32.const 3 i32.const 5872 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=8 - local.get $2 local.get $0 + local.get $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20565,15 +20300,15 @@ i32.const 8 i32.const 5920 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#splice - local.tee $0 + local.tee $1 i32.store offset=20 - local.get $0 + local.get $1 i32.load offset=12 if i32.const 0 @@ -20583,7 +20318,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=12 if i32.const 0 @@ -20735,34 +20470,34 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 3 i32.const 2 i32.const 12 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.load offset=4 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $0 + local.get $1 i32.const 2 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20774,87 +20509,87 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store i32.const 0 - local.get $0 + local.get $1 i32.load offset=12 - local.tee $3 - local.get $3 + local.tee $7 + local.get $7 i32.const 0 i32.gt_s select - local.set $5 - local.get $1 + local.set $8 + local.get $2 i32.const 1 - local.get $3 - local.get $5 + local.get $7 + local.get $8 i32.sub - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 1 i32.gt_s select - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select - local.tee $6 + local.tee $2 i32.const 2 i32.const 12 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $9 i32.store - local.get $7 + local.get $9 i32.load offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.tee $2 - local.get $5 + local.tee $10 + local.get $8 i32.const 2 i32.shl i32.add - local.tee $1 - local.get $6 + local.tee $11 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $3 - local.get $5 - local.get $6 + local.get $7 + local.get $2 + local.get $8 i32.add - local.tee $5 + local.tee $8 i32.ne if - local.get $1 - local.get $5 + local.get $11 + local.get $8 i32.const 2 i32.shl - local.get $2 + local.get $10 i32.add - local.get $3 - local.get $5 + local.get $7 + local.get $8 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end - local.get $0 - local.get $3 - local.get $6 + local.get $1 + local.get $7 + local.get $2 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.store offset=4 - local.get $7 + local.get $9 i32.load offset=12 i32.const 1 i32.ne @@ -20867,12 +20602,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $9 i32.const 0 call $~lib/array/Array#__get - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.eqz if i32.const 6080 @@ -20882,7 +20617,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load i32.const 1 i32.ne @@ -20894,7 +20629,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=12 i32.const 2 i32.ne @@ -20906,7 +20641,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/array/Array#__get if @@ -20918,7 +20653,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.tee $0 @@ -20979,55 +20714,55 @@ call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6144 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $0 i32.load offset=12 local.set $2 block $__inlined_func$~lib/array/Array#findIndex - loop $for-loop|059 + loop $for-loop|075 local.get $2 - local.get $4 + local.get $0 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select - local.get $0 + local.get $1 i32.gt_s if - local.get $4 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $4 i32.const 6144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|059 + local.set $1 + br $for-loop|075 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i if @@ -21041,55 +20776,55 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6176 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $2 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex60 - loop $for-loop|061 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex76 + loop $for-loop|077 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select + local.tee $7 local.get $0 + local.get $7 + i32.lt_s + select + local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.const 6176 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex60 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex76 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|061 + local.set $1 + br $for-loop|077 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -21105,55 +20840,55 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6208 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $2 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex62 - loop $for-loop|063 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex78 + loop $for-loop|079 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select + local.tee $7 local.get $0 + local.get $7 + i32.lt_s + select + local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.const 6208 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex62 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex78 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|063 + local.set $1 + br $for-loop|079 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21169,55 +20904,55 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6240 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $2 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex64 - loop $for-loop|065 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex80 + loop $for-loop|081 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select + local.tee $7 local.get $0 + local.get $7 + i32.lt_s + select + local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.const 6240 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex64 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex80 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|065 + local.set $1 + br $for-loop|081 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21249,55 +20984,55 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6272 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $2 i32.load offset=12 - local.set $2 - block $__inlined_func$~lib/array/Array#findIndex66 - loop $for-loop|067 + local.set $0 + block $__inlined_func$~lib/array/Array#findIndex83 + loop $for-loop|084 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select + local.tee $7 local.get $0 + local.get $7 + i32.lt_s + select + local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $4 + local.get $1 + local.get $2 i32.const 6272 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex66 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex83 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|067 + local.set $1 + br $for-loop|084 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21340,55 +21075,55 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6304 i32.store offset=8 i32.const 0 - local.set $0 - local.get $4 + local.set $1 + local.get $0 i32.load offset=12 local.set $2 - block $__inlined_func$~lib/array/Array#findIndex68 - loop $for-loop|069 + block $__inlined_func$~lib/array/Array#findIndex85 + loop $for-loop|086 local.get $2 - local.get $4 + local.get $0 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select - local.get $0 + local.get $1 i32.gt_s if - local.get $4 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $4 i32.const 6304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findIndex68 - local.get $0 + br_if $__inlined_func$~lib/array/Array#findIndex85 + local.get $1 i32.const 1 i32.add - local.set $0 - br $for-loop|069 + local.set $1 + br $for-loop|086 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 global.set $std/array/i global.get $std/array/i i32.const -1 @@ -21450,7 +21185,7 @@ i32.sub local.set $0 block $__inlined_func$~lib/array/Array#findLastIndex - loop $for-loop|058 + loop $for-loop|088 local.get $0 i32.const 0 i32.ge_s @@ -21474,7 +21209,7 @@ i32.const 1 i32.sub local.set $0 - br $for-loop|058 + br $for-loop|088 end end i32.const -1 @@ -21499,8 +21234,8 @@ i32.const 1 i32.sub local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex59 - loop $for-loop|060 + block $__inlined_func$~lib/array/Array#findLastIndex89 + loop $for-loop|090 local.get $0 i32.const 0 i32.ge_s @@ -21519,12 +21254,12 @@ i32.const 6416 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex59 + br_if $__inlined_func$~lib/array/Array#findLastIndex89 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|060 + br $for-loop|090 end end i32.const -1 @@ -21551,8 +21286,8 @@ i32.const 1 i32.sub local.set $0 - block $__inlined_func$~lib/array/Array#findLastIndex61 - loop $for-loop|062 + block $__inlined_func$~lib/array/Array#findLastIndex91 + loop $for-loop|092 local.get $0 i32.const 0 i32.ge_s @@ -21571,12 +21306,12 @@ i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex61 + br_if $__inlined_func$~lib/array/Array#findLastIndex91 local.get $0 i32.const 1 i32.sub local.set $0 - br $for-loop|062 + br $for-loop|092 end end i32.const -1 @@ -21603,8 +21338,8 @@ i32.const 1 i32.sub local.set $1 - block $__inlined_func$~lib/array/Array#findLastIndex63 - loop $for-loop|064 + block $__inlined_func$~lib/array/Array#findLastIndex93 + loop $for-loop|094 local.get $1 i32.const 0 i32.ge_s @@ -21623,12 +21358,12 @@ i32.const 6480 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#findLastIndex63 + br_if $__inlined_func$~lib/array/Array#findLastIndex93 local.get $1 i32.const 1 i32.sub local.set $1 - br $for-loop|064 + br $for-loop|094 end end i32.const -1 @@ -21650,7 +21385,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6512 @@ -21658,35 +21393,35 @@ block $__inlined_func$~lib/array/Array#every (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|070 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|095 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6512 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -21697,7 +21432,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|070 + br $for-loop|095 end end i32.const 1 @@ -21714,54 +21449,54 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6544 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every71 (result i32) + block $__inlined_func$~lib/array/Array#every96 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|072 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|097 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every71 + br_if $__inlined_func$~lib/array/Array#every96 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|072 + br $for-loop|097 end end i32.const 1 @@ -21777,54 +21512,54 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6576 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every73 (result i32) + block $__inlined_func$~lib/array/Array#every98 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|074 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|099 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every73 + br_if $__inlined_func$~lib/array/Array#every98 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|074 + br $for-loop|099 end end i32.const 1 @@ -21857,54 +21592,54 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6608 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every75 (result i32) + block $__inlined_func$~lib/array/Array#every101 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|076 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0102 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6608 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every75 + br_if $__inlined_func$~lib/array/Array#every101 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|076 + br $for-loop|0102 end end i32.const 1 @@ -21947,54 +21682,54 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6640 i32.store offset=8 - block $__inlined_func$~lib/array/Array#every77 (result i32) + block $__inlined_func$~lib/array/Array#every103 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|078 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $2 + loop $for-loop|0104 + local.get $2 local.get $0 - local.get $4 - i32.gt_s + i32.load offset=12 + local.tee $7 + local.get $2 + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $0 i32.const 6640 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/array/Array#every77 + br_if $__inlined_func$~lib/array/Array#every103 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|078 + br $for-loop|0104 end end i32.const 1 @@ -22042,7 +21777,7 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6672 @@ -22050,35 +21785,35 @@ block $__inlined_func$~lib/array/Array#some (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|079 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $2 + loop $for-loop|0106 + local.get $2 local.get $0 - local.get $4 - i32.gt_s + i32.load offset=12 + local.tee $7 + local.get $2 + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $0 i32.const 6672 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -22088,7 +21823,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|079 + br $for-loop|0106 end end i32.const 0 @@ -22105,53 +21840,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6704 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some80 (result i32) + block $__inlined_func$~lib/array/Array#some107 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|081 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0108 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6704 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some80 + br_if $__inlined_func$~lib/array/Array#some107 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|081 + br $for-loop|0108 end end i32.const 0 @@ -22167,53 +21902,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6736 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some82 (result i32) + block $__inlined_func$~lib/array/Array#some109 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|083 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0110 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6736 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some82 + br_if $__inlined_func$~lib/array/Array#some109 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|083 + br $for-loop|0110 end end i32.const 0 @@ -22245,53 +21980,53 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $5 + local.tee $2 i32.store local.get $0 i32.const 6768 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some84 (result i32) + block $__inlined_func$~lib/array/Array#some112 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $2 i32.load offset=12 - local.set $4 - loop $for-loop|085 - local.get $4 - local.get $5 + local.set $0 + loop $for-loop|0113 + local.get $0 + local.get $2 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $4 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $2 i32.const 6768 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some84 + br_if $__inlined_func$~lib/array/Array#some112 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|085 + br $for-loop|0113 end end i32.const 0 @@ -22335,53 +22070,53 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6800 i32.store offset=8 - block $__inlined_func$~lib/array/Array#some86 (result i32) + block $__inlined_func$~lib/array/Array#some114 (result i32) i32.const 0 local.set $1 - local.get $5 + local.get $0 i32.load offset=12 - local.set $4 - loop $for-loop|087 - local.get $4 - local.get $5 - i32.load offset=12 - local.tee $0 + local.set $2 + loop $for-loop|0115 + local.get $2 local.get $0 - local.get $4 - i32.gt_s + i32.load offset=12 + local.tee $7 + local.get $2 + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $5 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $0 + local.get $7 local.get $1 - local.get $5 + local.get $0 i32.const 6800 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/array/Array#some86 + br_if $__inlined_func$~lib/array/Array#some114 drop local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|087 + br $for-loop|0115 end end i32.const 0 @@ -22430,29 +22165,29 @@ global.set $std/array/i global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6832 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $0 i32.load offset=12 local.set $2 - loop $for-loop|06988 + loop $for-loop|0117 local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 local.get $0 + i32.load offset=12 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 @@ -22462,7 +22197,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $0 i32.const 6832 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22470,7 +22205,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|06988 + br $for-loop|0117 end end global.get $std/array/i @@ -22489,29 +22224,29 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6864 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|071 + local.set $0 + loop $for-loop|0119 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 @@ -22521,7 +22256,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $2 i32.const 6864 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22529,7 +22264,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|071 + br $for-loop|0119 end end global.get $std/array/i @@ -22564,29 +22299,29 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 6896 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|07489 + local.set $0 + loop $for-loop|0122 + local.get $0 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 + local.tee $7 local.get $0 - local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 @@ -22596,7 +22331,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $2 i32.const 6896 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22604,7 +22339,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|07489 + br $for-loop|0122 end end global.get $std/array/i @@ -22650,29 +22385,29 @@ global.set $std/array/i global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6928 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $0 i32.load offset=12 local.set $2 - loop $for-loop|07690 + loop $for-loop|0124 local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 local.get $0 + i32.load offset=12 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 @@ -22682,7 +22417,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $0 i32.const 6928 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22690,7 +22425,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|07690 + br $for-loop|0124 end end global.get $std/array/i @@ -22738,29 +22473,29 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6960 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $0 i32.load offset=12 local.set $2 - loop $for-loop|07991 + loop $for-loop|0127 local.get $2 - local.get $4 - i32.load offset=12 - local.tee $0 local.get $0 + i32.load offset=12 + local.tee $7 local.get $2 - i32.gt_s + local.get $7 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $0 i32.load offset=4 local.get $1 i32.const 2 @@ -22770,7 +22505,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $0 i32.const 6960 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -22778,7 +22513,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|07991 + br $for-loop|0127 end end global.get $~lib/memory/__stack_pointer @@ -22852,7 +22587,7 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $3 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 6992 @@ -22869,30 +22604,30 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $7 i32.const 0 i32.store + local.get $7 local.get $0 - local.get $3 i32.load offset=12 - local.tee $6 + local.tee $7 i32.const 2 i32.const 10 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $8 i32.store - local.get $7 + local.get $8 i32.load offset=4 - local.set $4 - loop $for-loop|08193 - local.get $6 - local.get $3 - i32.load offset=12 - local.tee $0 + local.set $9 + loop $for-loop|0129 + local.get $7 local.get $0 - local.get $6 - i32.gt_s + i32.load offset=12 + local.tee $10 + local.get $7 + local.get $10 + i32.lt_s select local.get $1 i32.gt_s @@ -22900,20 +22635,20 @@ local.get $1 i32.const 2 i32.shl - local.tee $2 - local.get $3 + local.tee $10 + local.get $0 i32.load offset=4 i32.add i32.load - local.set $0 + local.set $11 i32.const 3 global.set $~argumentsLength - local.get $2 - local.get $4 + local.get $9 + local.get $10 i32.add - local.get $0 + local.get $11 local.get $1 - local.get $3 + local.get $0 i32.const 6992 i32.load call_indirect $0 (type $i32_i32_i32_=>_f32) @@ -22922,16 +22657,16 @@ i32.const 1 i32.add local.set $1 - br $for-loop|08193 + br $for-loop|0129 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=12 - local.get $7 + local.get $8 i32.load offset=12 i32.const 4 i32.ne @@ -22943,10 +22678,10 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 0 call $~lib/array/Array#__get - local.set $11 + local.set $6 global.get $~lib/memory/__stack_pointer global.get $std/array/arr local.tee $0 @@ -22955,7 +22690,7 @@ i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s - local.get $11 + local.get $6 f32.ne if i32.const 0 @@ -22968,14 +22703,14 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 7024 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7024 call $~lib/array/Array#map global.get $std/array/i @@ -23008,14 +22743,14 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 7056 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7056 call $~lib/array/Array#map global.get $std/array/i @@ -23140,14 +22875,14 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 7152 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7152 call $~lib/array/Array#filter drop @@ -23181,14 +22916,14 @@ i32.const 0 global.set $std/array/i global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/array/arr local.tee $0 + global.get $std/array/arr + local.tee $1 i32.store - local.get $1 + local.get $0 i32.const 7184 i32.store offset=8 - local.get $0 + local.get $1 i32.const 7184 call $~lib/array/Array#filter drop @@ -23289,56 +23024,56 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 7248 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|094 + local.set $7 + loop $for-loop|0136 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|094 + br $for-loop|0136 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23354,56 +23089,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7280 i32.store offset=8 - i32.const 4 - local.set $5 i32.const 0 local.set $1 - local.get $4 + i32.const 4 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|096 + local.set $7 + loop $for-loop|0138 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|096 + br $for-loop|0138 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23419,56 +23154,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7312 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|098 + local.set $7 + loop $for-loop|0140 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|098 + br $for-loop|0140 end end - local.get $5 + local.get $0 i32.eqz if i32.const 0 @@ -23481,56 +23216,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7344 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|0100 + local.set $7 + loop $for-loop|0142 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0100 + br $for-loop|0142 end end - local.get $5 + local.get $0 if i32.const 0 i32.const 1552 @@ -23542,56 +23277,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7376 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|0102 + local.set $7 + loop $for-loop|0144 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0102 + br $for-loop|0144 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -23623,56 +23358,56 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7408 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|0104 + local.set $7 + loop $for-loop|0147 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0104 + br $for-loop|0147 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -23715,56 +23450,56 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 7440 i32.store offset=8 i32.const 0 - local.set $5 - i32.const 0 local.set $1 - local.get $4 + i32.const 0 + local.set $0 + local.get $2 i32.load offset=12 - local.set $2 - loop $for-loop|0106 + local.set $7 + loop $for-loop|0149 + local.get $7 local.get $2 - local.get $4 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s select local.get $1 i32.gt_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $8 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 + local.get $8 local.get $1 - local.get $4 + local.get $2 i32.const 7440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 + local.set $0 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|0106 + br $for-loop|0149 end end - local.get $5 + local.get $0 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -23811,37 +23546,37 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 7472 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|090 + loop $for-loop|0151 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7472 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -23850,7 +23585,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|090 + br $for-loop|0151 end end local.get $0 @@ -23869,37 +23604,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7504 i32.store offset=8 i32.const 4 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|092 + loop $for-loop|0153 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7504 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -23908,7 +23643,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|092 + br $for-loop|0153 end end local.get $0 @@ -23927,37 +23662,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7536 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|094107 + loop $for-loop|0155 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7536 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -23966,7 +23701,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|094107 + br $for-loop|0155 end end local.get $0 @@ -23982,37 +23717,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7568 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|096108 + loop $for-loop|0157 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7568 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24021,7 +23756,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|096108 + br $for-loop|0157 end end local.get $0 @@ -24036,37 +23771,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7600 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|098109 + loop $for-loop|0159 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7600 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24075,7 +23810,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|098109 + br $for-loop|0159 end end local.get $0 @@ -24110,37 +23845,37 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store local.get $0 i32.const 7632 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|0101 + loop $for-loop|0162 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7632 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24149,7 +23884,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0101 + br $for-loop|0162 end end local.get $0 @@ -24195,37 +23930,37 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $4 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 7664 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $2 i32.load offset=12 i32.const 1 i32.sub local.set $1 - loop $for-loop|0103 + loop $for-loop|0164 local.get $1 i32.const 0 i32.ge_s if - local.get $4 + local.get $2 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $0 - local.get $2 + local.get $7 local.get $1 - local.get $4 + local.get $2 i32.const 7664 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -24234,7 +23969,7 @@ i32.const 1 i32.sub local.set $1 - br $for-loop|0103 + br $for-loop|0164 end end local.get $0 @@ -24305,181 +24040,181 @@ i32.const 20 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load offset=4 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=20 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 80 i32.store offset=4 - local.get $1 - i32.const 0 local.get $0 + i32.const 0 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=24 - local.get $0 + local.get $1 i32.const 90 i32.store - local.get $0 + local.get $1 i32.const 90 i32.store offset=4 - local.get $1 - i32.const 1 local.get $0 + i32.const 1 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=28 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 95 i32.store offset=4 - local.get $1 - i32.const 2 local.get $0 + i32.const 2 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 100 i32.store offset=4 - local.get $1 - i32.const 3 local.get $0 + i32.const 3 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=32 - local.get $0 + local.get $1 i32.const 80 i32.store - local.get $0 + local.get $1 i32.const 110 i32.store offset=4 - local.get $1 - i32.const 4 local.get $0 + i32.const 4 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=36 - local.get $0 + local.get $1 i32.const 110 i32.store - local.get $0 + local.get $1 i32.const 115 i32.store offset=4 - local.get $1 - i32.const 5 local.get $0 + i32.const 5 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=40 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 120 i32.store offset=4 - local.get $1 - i32.const 6 local.get $0 + i32.const 6 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=44 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 125 i32.store offset=4 - local.get $1 - i32.const 7 local.get $0 + i32.const 7 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=48 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 130 i32.store offset=4 - local.get $1 - i32.const 8 local.get $0 + i32.const 8 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=52 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 135 i32.store offset=4 - local.get $1 - i32.const 9 local.get $0 + i32.const 9 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=56 - local.get $0 + local.get $1 i32.const 75 i32.store - local.get $0 + local.get $1 i32.const 140 i32.store offset=4 - local.get $1 - i32.const 10 local.get $0 + i32.const 10 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=60 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 140 i32.store offset=4 - local.get $1 - i32.const 11 local.get $0 - call $~lib/array/Array#__uset + i32.const 11 local.get $1 + call $~lib/array/Array#__uset + local.get $0 global.set $std/array/inputStabArr global.get $~lib/memory/__stack_pointer i32.const 12 @@ -24487,181 +24222,181 @@ i32.const 20 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load offset=4 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=64 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 95 i32.store offset=4 - local.get $1 - i32.const 0 local.get $0 + i32.const 0 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=68 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 125 i32.store offset=4 - local.get $1 - i32.const 1 local.get $0 + i32.const 1 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=72 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 130 i32.store offset=4 - local.get $1 - i32.const 2 local.get $0 + i32.const 2 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=76 - local.get $0 + local.get $1 i32.const 70 i32.store - local.get $0 + local.get $1 i32.const 140 i32.store offset=4 - local.get $1 - i32.const 3 local.get $0 + i32.const 3 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=80 - local.get $0 + local.get $1 i32.const 75 i32.store - local.get $0 + local.get $1 i32.const 140 i32.store offset=4 - local.get $1 - i32.const 4 local.get $0 + i32.const 4 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=84 - local.get $0 + local.get $1 i32.const 80 i32.store - local.get $0 + local.get $1 i32.const 110 i32.store offset=4 - local.get $1 - i32.const 5 local.get $0 + i32.const 5 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=88 - local.get $0 + local.get $1 i32.const 90 i32.store - local.get $0 + local.get $1 i32.const 90 i32.store offset=4 - local.get $1 - i32.const 6 local.get $0 + i32.const 6 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=92 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 80 i32.store offset=4 - local.get $1 - i32.const 7 local.get $0 + i32.const 7 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=96 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 100 i32.store offset=4 - local.get $1 - i32.const 8 local.get $0 + i32.const 8 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=100 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 120 i32.store offset=4 - local.get $1 - i32.const 9 local.get $0 + i32.const 9 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=104 - local.get $0 + local.get $1 i32.const 100 i32.store - local.get $0 + local.get $1 i32.const 135 i32.store offset=4 - local.get $1 - i32.const 10 local.get $0 + i32.const 10 + local.get $1 call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor - local.tee $0 + local.tee $1 i32.store offset=108 - local.get $0 + local.get $1 i32.const 110 i32.store - local.get $0 + local.get $1 i32.const 115 i32.store offset=4 - local.get $1 - i32.const 11 local.get $0 - call $~lib/array/Array#__uset + i32.const 11 local.get $1 + call $~lib/array/Array#__uset + local.get $0 global.set $std/array/outputStabArr global.get $~lib/memory/__stack_pointer i32.const 3 @@ -24669,23 +24404,23 @@ i32.const 10 i32.const 7888 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=4 i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $0 call $~lib/array/Array#sort@varargs i32.const 3 i32.const 2 i32.const 10 i32.const 7952 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -24702,23 +24437,23 @@ i32.const 10 i32.const 7984 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=12 i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $0 call $~lib/array/Array#sort@varargs i32.const 8 i32.const 2 i32.const 10 i32.const 8048 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -24735,7 +24470,7 @@ i32.const 11 i32.const 8112 call $~lib/rt/__newArray - local.tee $5 + local.tee $1 i32.store offset=112 i32.const 0 global.set $~argumentsLength @@ -24752,11 +24487,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of18 - block $0of19 - block $outOfRange10 + block $1of148 + block $0of149 + block $outOfRange50 global.get $~argumentsLength - br_table $0of19 $1of18 $outOfRange10 + br_table $0of149 $1of148 $outOfRange50 end unreachable end @@ -24766,9 +24501,9 @@ i32.const 8208 i32.store end - local.get $5 + local.get $1 i32.load offset=4 - local.get $5 + local.get $1 i32.load offset=12 local.get $0 call $~lib/util/sort/SORT @@ -24781,45 +24516,45 @@ i32.const 11 i32.const 8240 call $~lib/rt/__newArray - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.store offset=8 block $__inlined_func$std/array/isArraysEqual (result i32) i32.const 0 local.set $0 i32.const 0 - local.get $5 + local.get $1 i32.load offset=12 - local.tee $1 - local.get $4 + local.tee $7 + local.get $2 i32.load offset=12 i32.ne br_if $__inlined_func$std/array/isArraysEqual drop i32.const 1 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.eq br_if $__inlined_func$std/array/isArraysEqual drop - loop $for-loop|038 + loop $for-loop|028 local.get $0 - local.get $1 + local.get $7 i32.lt_s if - local.get $5 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.ne if (result i32) - local.get $4 + local.get $2 local.get $0 call $~lib/array/Array#__get - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.ne else i32.const 0 @@ -24827,10 +24562,10 @@ i32.eqz if i32.const 0 - local.get $5 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.get $4 + local.get $2 local.get $0 call $~lib/array/Array#__get f64.ne @@ -24841,7 +24576,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|038 + br $for-loop|028 end end i32.const 1 @@ -24878,11 +24613,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1151 - block $0of1152 - block $outOfRange153 + block $1of1212 + block $0of1213 + block $outOfRange214 global.get $~argumentsLength - br_table $0of1152 $1of1151 $outOfRange153 + br_table $0of1213 $1of1212 $outOfRange214 end unreachable end @@ -24930,11 +24665,11 @@ i32.const 7 i32.const 8464 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store offset=120 i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#sort@varargs drop @@ -24943,12 +24678,12 @@ i32.const 7 i32.const 8544 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $0 + local.get $1 call $std/array/isArraysEqual i32.eqz if @@ -24965,7 +24700,7 @@ i32.const 3 i32.const 8592 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store offset=124 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -24973,7 +24708,7 @@ i32.const 3 i32.const 8624 call $~lib/rt/__newArray - local.tee $8 + local.tee $7 i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -24981,7 +24716,7 @@ i32.const 3 i32.const 8656 call $~lib/rt/__newArray - local.tee $3 + local.tee $8 i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24989,7 +24724,7 @@ i32.const 3 i32.const 8688 call $~lib/rt/__newArray - local.tee $7 + local.tee $9 i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25002,43 +24737,43 @@ global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $6 + local.tee $11 i32.store offset=144 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray - local.tee $5 + local.tee $12 i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray - local.tee $4 + local.tee $0 i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $2 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray - local.tee $0 + local.tee $13 i32.store offset=160 - local.get $1 + local.get $2 call $std/array/assertSortedDefault - local.get $8 + local.get $7 call $std/array/assertSortedDefault i32.const 1 i32.const 2 i32.const 3 i32.const 8816 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $8 - local.get $1 + local.get $7 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25050,19 +24785,19 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 call $std/array/assertSortedDefault i32.const 2 i32.const 2 i32.const 3 i32.const 8848 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 - local.get $3 - local.get $1 + local.get $8 + local.get $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25074,9 +24809,9 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $9 call $std/array/assertSortedDefault - local.get $7 + local.get $9 local.get $10 i32.const 0 call $std/array/isArraysEqual @@ -25089,9 +24824,9 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $11 call $std/array/assertSortedDefault - local.get $6 + local.get $11 local.get $10 i32.const 4 call $std/array/isArraysEqual @@ -25104,9 +24839,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $12 call $std/array/assertSortedDefault - local.get $5 + local.get $12 local.get $10 i32.const 4 call $std/array/isArraysEqual @@ -25119,9 +24854,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 call $std/array/assertSortedDefault - local.get $4 + local.get $0 local.get $10 i32.const 4 call $std/array/isArraysEqual @@ -25134,9 +24869,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 call $std/array/assertSortedDefault - local.get $2 + local.get $1 local.get $10 i32.const 4 call $std/array/isArraysEqual @@ -25149,361 +24884,44 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $13 call $std/array/assertSortedDefault - i32.const 0 - local.set $8 - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i64.const 0 - i64.store offset=8 - local.get $6 - i64.const 0 - i64.store offset=16 - local.get $6 - global.get $std/array/inputStabArr - local.tee $5 - i32.store offset=8 - local.get $6 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - i32.const 0 - local.get $5 - i32.load offset=12 - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $1 - local.get $0 - local.get $2 - local.get $1 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.tee $0 - i32.const 2 - i32.const 20 - i32.const 0 - call $~lib/rt/__newArray - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $2 - local.get $0 - i32.const 2 - i32.shl - local.set $1 - loop $while-continue|012 - local.get $1 - local.get $8 - i32.gt_u - if - local.get $4 - local.get $8 - i32.add - local.get $2 - local.get $8 - i32.add - i32.load - local.tee $0 - i32.store - local.get $3 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $8 - i32.const 4 - i32.add - local.set $8 - br $while-continue|012 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $3 - i32.store - local.get $0 - i32.const 8880 - i32.store offset=4 - local.get $3 - i32.load offset=4 - local.get $3 - i32.load offset=12 - i32.const 8880 - call $~lib/util/sort/SORT - local.get $6 - local.get $3 - i32.store offset=12 - i32.const 1 - local.set $8 - global.get $~lib/memory/__stack_pointer - global.get $std/array/inputStabArr - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - local.set $1 - loop $for-loop|013 - local.get $1 - local.get $7 - i32.gt_s - if - block $for-break0 - global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 - call $~lib/array/Array#__get - local.tee $2 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - global.get $std/array/outputStabArr - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $7 - call $~lib/array/Array#__get - local.tee $0 - i32.store offset=20 - local.get $2 - i32.load - local.get $0 - i32.load - i32.ne - if (result i32) - i32.const 1 - else - local.get $2 - i32.load offset=4 - local.get $0 - i32.load offset=4 - i32.ne - end - if - i32.const 0 - local.set $8 - br $for-break0 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|013 - end - end - end - local.get $8 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 1042 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer + call $std/array/assertStableSortedForComplexObjects global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createRandomOrderedArray - local.tee $1 + local.tee $0 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 257 call $std/array/createRandomOrderedArray - local.tee $0 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 8912 i32.store offset=8 - local.get $1 + local.get $0 i32.const 8912 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 8944 i32.store offset=8 - local.get $1 + local.get $0 i32.const 8944 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 8976 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8976 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 9008 i32.store offset=8 - local.get $0 + local.get $1 i32.const 9008 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 - 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 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - local.tee $4 - i64.const 0 - i64.store - local.get $4 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner3 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.const 26 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.store - local.get $5 - i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 0 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 32 - call $~lib/memory/memory.fill - local.get $5 - local.get $0 - i32.store - local.get $5 - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $5 - local.get $0 - i32.store offset=4 - local.get $5 - i32.const 32 - i32.store offset=8 - local.get $5 - i32.const 2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.store - loop $for-loop|0154 - local.get $1 - i32.const 2 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/array/Array#constructor - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 1 - local.get $1 - i32.sub - call $~lib/array/Array#__set - local.get $5 - local.get $1 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0154 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=156 - global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store offset=8 - local.get $5 - i32.const 9040 - call $std/array/assertSorted<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 0 - local.set $5 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -25525,66 +24943,184 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i64.const 0 i64.store - local.get $0 + local.get $2 i32.const 16 - i32.const 29 + i32.const 26 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 0 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 i32.const 0 + call $~lib/rt/itcms/__new + local.tee $7 i32.store offset=4 - local.get $0 + local.get $7 i32.const 0 + i32.const 32 + call $~lib/memory/memory.fill + local.get $2 + local.get $7 + i32.store + local.get $7 + if + local.get $2 + local.get $7 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end + local.get $2 + local.get $7 + i32.store offset=4 + local.get $2 + i32.const 32 i32.store offset=8 - local.get $0 + local.get $2 + i32.const 2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.store + loop $for-loop|0215 + local.get $3 + i32.const 2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/array/Array#constructor + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + local.get $3 + i32.sub + call $~lib/array/Array#__set + local.get $2 + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0215 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=156 + global.get $~lib/memory/__stack_pointer + i32.const 9040 + i32.store offset=8 + local.get $2 + i32.const 9040 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + 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 15652 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 2048 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $7 i32.store offset=4 - local.get $4 + local.get $7 i32.const 0 i32.const 2048 call $~lib/memory/memory.fill - local.get $0 - local.get $4 + local.get $3 + local.get $7 i32.store - local.get $0 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $4 + local.get $7 + if + local.get $3 + local.get $7 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $7 i32.store offset=4 - local.get $0 + local.get $3 i32.const 2048 i32.store offset=8 - local.get $0 + local.get $3 i32.const 512 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 + local.get $2 + local.get $3 i32.store - loop $for-loop|015 - local.get $5 + loop $for-loop|00 + local.get $0 i32.const 512 i32.lt_s if @@ -25597,18 +25133,18 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 4 i32.const 28 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 511 - local.get $5 + local.get $0 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -25616,29 +25152,29 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 + local.get $3 local.get $0 - local.get $5 - local.get $1 + local.get $2 call $~lib/array/Array<~lib/array/Array>#__set - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|015 + local.set $0 + br $for-loop|00 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 9072 i32.store offset=8 - local.get $0 + local.get $3 i32.const 9072 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -25647,7 +25183,7 @@ i32.const 31 i32.const 9264 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 7 @@ -25655,12 +25191,12 @@ i32.const 31 i32.const 9312 call $~lib/rt/__newArray - local.tee $6 + local.tee $3 i32.store offset=152 i32.const 1 global.set $~argumentsLength i32.const 0 - local.set $5 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25672,18 +25208,18 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of117 - block $0of118 - block $outOfRange19 + block $1of151 + block $0of152 + block $outOfRange53 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of118 $1of117 $outOfRange19 + br_table $0of152 $1of151 $outOfRange53 end unreachable end i32.const 9360 - local.set $5 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 9360 i32.store @@ -25699,18 +25235,18 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load offset=12 - local.get $5 + local.get $0 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 + local.tee $2 + local.get $1 i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $1 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -25722,36 +25258,36 @@ i64.const 0 i64.store i32.const 1 - local.set $7 - local.get $0 + local.set $2 + local.get $1 i32.load offset=12 - local.set $1 - loop $for-loop|020 - local.get $1 + local.set $7 + loop $for-loop|054 + local.get $2 local.get $7 - i32.gt_s + i32.lt_s if - local.get $0 - local.get $7 + local.get $1 + local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $4 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $8 i32.store - local.get $0 - local.get $7 + local.get $1 + local.get $2 call $~lib/array/Array#__get - local.set $2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $9 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $4 - local.get $2 - local.get $5 + local.get $8 + local.get $9 + local.get $0 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -25764,11 +25300,11 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null> end - local.get $7 + local.get $2 i32.const 1 i32.add - local.set $7 - br $for-loop|020 + local.set $2 + br $for-loop|054 end end global.get $~lib/memory/__stack_pointer @@ -25796,7 +25332,7 @@ global.set $~lib/memory/__stack_pointer block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (result i32) i32.const 0 - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -25809,47 +25345,47 @@ i64.const 0 i64.store block $folding-inner1 - block $folding-inner021 - local.get $0 + block $folding-inner01 + local.get $1 i32.load offset=12 - local.tee $1 - local.get $6 + local.tee $2 + local.get $3 i32.load offset=12 i32.ne - br_if $folding-inner021 - local.get $0 - local.get $6 + br_if $folding-inner01 + local.get $1 + local.get $3 i32.eq br_if $folding-inner1 - loop $for-loop|049 - local.get $1 - local.get $3 - i32.gt_s + loop $for-loop|042 + local.get $0 + local.get $2 + i32.lt_s if + local.get $1 local.get $0 - local.get $3 call $~lib/array/Array#__get - local.set $4 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.store - local.get $6 local.get $3 + local.get $0 call $~lib/array/Array#__get - local.set $2 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $8 i32.store offset=4 - local.get $4 - local.get $2 + local.get $7 + local.get $8 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner021 - local.get $3 + br_if $folding-inner01 + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|049 + local.set $0 + br $for-loop|042 end end br $folding-inner1 @@ -25879,7 +25415,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 - local.set $3 + local.set $2 local.get $0 i32.const 8 i32.sub @@ -25896,10 +25432,10 @@ i32.const 0 i32.const 400 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $2 + local.tee $8 i32.store - loop $for-loop|0155 - local.get $3 + loop $for-loop|044 + local.get $2 i32.const 400 i32.lt_s if @@ -25907,9 +25443,9 @@ f64.const 32 f64.mul i32.trunc_f64_s - local.set $5 + local.set $9 i32.const 0 - local.set $8 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -25930,15 +25466,13 @@ local.get $1 i32.const 9232 i32.store - loop $for-loop|00 - local.get $5 - local.get $8 - i32.gt_s + loop $for-loop|04 + local.get $3 + local.get $9 + i32.lt_s if - local.get $0 - local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $10 i32.const 7696 i32.store offset=4 call $~lib/math/NativeMath.random @@ -25953,7 +25487,7 @@ f64.mul f64.floor i32.trunc_f64_s - local.set $7 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -25970,7 +25504,7 @@ i32.load i32.const 1 i32.shr_u - local.get $7 + local.get $11 i32.le_u if global.get $~lib/memory/__stack_pointer @@ -25978,17 +25512,17 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 9232 - local.set $0 + local.set $1 br $__inlined_func$~lib/string/String#charAt end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 - local.get $7 + local.get $1 + local.get $11 i32.const 1 i32.shl i32.const 7696 @@ -26001,19 +25535,19 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $4 local.get $1 + i32.store offset=4 + local.get $10 local.get $0 + local.get $1 call $~lib/string/String.__concat local.tee $0 i32.store - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 - br $for-loop|00 + local.set $3 + br $for-loop|04 end end global.get $~lib/memory/__stack_pointer @@ -26023,23 +25557,22 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + local.get $8 local.get $2 - local.get $3 local.get $0 call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 - br $for-loop|0155 + local.set $2 + br $for-loop|044 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.tee $0 + local.get $8 i32.store offset=156 i32.const 1 global.set $~argumentsLength @@ -26056,13 +25589,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1156 - block $0of1157 - block $outOfRange158 + block $1of146 + block $0of147 + block $outOfRange48 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of1157 $1of1156 $outOfRange158 + br_table $0of147 $1of146 $outOfRange48 end unreachable end @@ -26072,7 +25605,7 @@ i32.const 9392 i32.store end - local.get $0 + local.get $8 local.get $1 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -26086,23 +25619,23 @@ call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 local.get $0 i32.store offset=164 - local.get $2 + local.get $1 i32.const 9520 i32.store offset=168 local.get $0 i32.load offset=4 - local.set $7 + local.set $2 local.get $0 i32.load offset=12 - local.set $1 + local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $8 - local.get $2 + local.set $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26114,10 +25647,10 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinBooleanArray - local.get $1 + local.get $7 i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -26129,51 +25662,51 @@ local.set $1 br $__inlined_func$~lib/util/string/joinBooleanArray end - block $folding-inner01 - local.get $3 + block $folding-inner06 + local.get $7 i32.eqz if i32.const 9456 i32.const 9488 - local.get $7 + local.get $2 i32.load8_u select local.set $1 - br $folding-inner01 + br $folding-inner06 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 9516 i32.load i32.const 1 i32.shr_u - local.tee $6 + local.tee $8 i32.const 5 i32.add i32.mul i32.const 5 i32.add - local.tee $4 + local.tee $9 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|13 + loop $for-loop|18 local.get $3 - local.get $8 - i32.gt_s + local.get $7 + i32.lt_s if - local.get $7 - local.get $8 + local.get $2 + local.get $3 i32.add i32.load8_u - local.tee $2 + local.tee $10 i32.eqz i32.const 4 i32.add - local.set $5 + local.set $11 local.get $0 i32.const 1 i32.shl @@ -26181,17 +25714,17 @@ i32.add i32.const 9456 i32.const 9488 - local.get $2 + local.get $10 select - local.get $5 + local.get $11 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $11 i32.add local.set $0 - local.get $6 + local.get $8 if local.get $0 i32.const 1 @@ -26199,23 +25732,23 @@ local.get $1 i32.add i32.const 9520 - local.get $6 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $6 + local.get $8 i32.add local.set $0 end - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 - br $for-loop|13 + local.set $3 + br $for-loop|18 end end - local.get $3 + local.get $2 local.get $7 i32.add i32.load8_u @@ -26223,7 +25756,7 @@ i32.eqz i32.const 4 i32.add - local.set $5 + local.set $3 local.get $0 i32.const 1 i32.shl @@ -26233,13 +25766,13 @@ i32.const 9488 local.get $2 select - local.get $5 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $9 local.get $0 - local.get $5 + local.get $3 i32.add local.tee $0 i32.gt_s @@ -26248,7 +25781,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner01 + br $folding-inner06 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26285,15 +25818,15 @@ i32.const 3 i32.const 9600 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 9232 i32.store offset=168 - local.get $1 + local.get $0 i32.const 9232 call $~lib/array/Array#join local.set $0 @@ -26320,15 +25853,15 @@ i32.const 7 i32.const 11440 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 11472 i32.store offset=168 - local.get $1 + local.get $0 i32.const 11472 call $~lib/array/Array#join local.set $0 @@ -26355,15 +25888,15 @@ i32.const 3 i32.const 11504 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 11536 i32.store offset=168 - local.get $1 + local.get $0 i32.const 11536 call $~lib/array/Array#join local.set $0 @@ -26390,15 +25923,15 @@ i32.const 11 i32.const 11648 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 11728 i32.store offset=168 - local.get $1 + local.get $0 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -26424,15 +25957,15 @@ i32.const 31 i32.const 13040 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 9232 i32.store offset=168 - local.get $1 + local.get $0 i32.const 9232 call $~lib/array/Array<~lib/string/String|null>#join local.set $0 @@ -26564,7 +26097,7 @@ i32.const 3 i32.const 13328 call $~lib/rt/__newArray - local.tee $4 + local.tee $0 i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -26572,7 +26105,7 @@ i32.const 3 i32.const 13360 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -26588,18 +26121,18 @@ i32.const 3 i32.const 13424 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=144 - local.get $4 + local.get $0 call $~lib/array/Array#toString - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 9232 i32.store offset=8 - local.get $4 + local.get $0 i32.const 9232 call $~lib/string/String.__eq i32.eqz @@ -26611,17 +26144,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/array/Array#toString - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $4 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 13008 i32.store offset=8 - local.get $4 + local.get $0 i32.const 13008 call $~lib/string/String.__eq i32.eqz @@ -26635,15 +26168,15 @@ end local.get $2 call $~lib/array/Array#toString - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 13472 i32.store offset=8 - local.get $2 + local.get $0 i32.const 13472 call $~lib/string/String.__eq i32.eqz @@ -26655,17 +26188,17 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 call $~lib/array/Array#toString - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 13504 i32.store offset=8 - local.get $1 + local.get $0 i32.const 13504 call $~lib/string/String.__eq i32.eqz @@ -26682,12 +26215,12 @@ i32.const 36 i32.const 13552 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26696,23 +26229,23 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 9520 i32.store - local.get $1 + local.get $0 i32.load offset=4 - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.load offset=12 - local.set $1 + local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $8 - local.get $2 + local.set $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26724,10 +26257,10 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.const 0 i32.lt_s if @@ -26739,54 +26272,54 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner04 - local.get $6 + block $folding-inner010 + local.get $7 i32.eqz if - local.get $5 + local.get $2 i32.load8_s call $~lib/util/number/itoa32 local.set $1 - br $folding-inner04 + br $folding-inner010 end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 9516 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $8 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $2 + local.tee $9 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|06 - local.get $6 - local.get $8 - i32.gt_s + loop $for-loop|012 + local.get $3 + local.get $7 + i32.lt_s if local.get $0 i32.const 1 i32.shl local.get $1 i32.add - local.get $5 - local.get $8 + local.get $2 + local.get $3 i32.add i32.load8_s call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $8 if local.get $0 i32.const 1 @@ -26794,30 +26327,30 @@ local.get $1 i32.add i32.const 9520 - local.get $4 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $8 i32.add local.set $0 end - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 - br $for-loop|06 + local.set $3 + br $for-loop|012 end end - local.get $2 + local.get $9 local.get $0 i32.const 1 i32.shl local.get $1 i32.add - local.get $5 - local.get $6 + local.get $2 + local.get $7 i32.add i32.load8_s call $~lib/util/number/itoa_buffered @@ -26830,7 +26363,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner04 + br $folding-inner010 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26871,12 +26404,12 @@ i32.const 9 i32.const 13616 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26885,23 +26418,23 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 9520 i32.store - local.get $1 + local.get $0 i32.load offset=4 - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.load offset=12 - local.set $1 + local.set $7 i32.const 0 local.set $0 i32.const 0 - local.set $8 - local.get $2 + local.set $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -26913,10 +26446,10 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + local.get $7 i32.const 1 i32.sub - local.tee $6 + local.tee $7 i32.const 0 i32.lt_s if @@ -26928,56 +26461,56 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner07 - local.get $6 + block $folding-inner015 + local.get $7 i32.eqz if - local.get $5 + local.get $2 i32.load16_u call $~lib/util/number/utoa32 local.set $1 - br $folding-inner07 + br $folding-inner015 end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 9516 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $8 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $2 + local.tee $9 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|09124 - local.get $6 - local.get $8 - i32.gt_s + loop $for-loop|017 + local.get $3 + local.get $7 + i32.lt_s if local.get $0 i32.const 1 i32.shl local.get $1 i32.add - local.get $8 + local.get $3 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $8 if local.get $0 i32.const 1 @@ -26985,32 +26518,32 @@ local.get $1 i32.add i32.const 9520 - local.get $4 + local.get $8 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $8 i32.add local.set $0 end - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 - br $for-loop|09124 + local.set $3 + br $for-loop|017 end end - local.get $2 + local.get $9 local.get $0 i32.const 1 i32.shl local.get $1 i32.add - local.get $6 + local.get $7 i32.const 1 i32.shl - local.get $5 + local.get $2 i32.add i32.load16_u call $~lib/util/number/itoa_buffered @@ -27023,7 +26556,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner07 + br $folding-inner015 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -27064,12 +26597,12 @@ i32.const 37 i32.const 13696 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -27078,13 +26611,13 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 9520 i32.store - local.get $1 + local.get $0 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -27092,9 +26625,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer + local.tee $1 local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 13744 i32.store offset=8 local.get $0 @@ -27114,12 +26648,12 @@ i32.const 38 i32.const 13824 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=164 + local.tee $1 local.get $0 + i32.store offset=164 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -27128,26 +26662,346 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 9520 i32.store - local.get $1 - call $~lib/array/Array#join + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $7 + i32.const 0 local.set $0 + i32.const 0 + local.set $3 + local.get $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $7 + i32.const 1 + i32.sub + local.tee $7 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9232 + local.set $1 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + block $folding-inner019 + local.get $7 + i32.eqz + if + local.get $2 + i64.load + i64.extend32_s + local.set $4 + 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 15652 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa64 + local.get $4 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9824 + local.set $1 + br $__inlined_func$~lib/util/number/itoa64 + end + i64.const 0 + local.get $4 + i64.sub + local.get $4 + local.get $4 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $0 + select + local.tee $4 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.wrap_i64 + local.tee $2 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $0 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $2 + local.get $3 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $4 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $4 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $4 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $4 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $4 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $4 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $4 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $4 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $4 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $4 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.get $0 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $4 + local.get $2 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner019 + end + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 9516 + i32.load + i32.const 1 + i32.shr_u + local.tee $8 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $9 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $for-loop|021 + local.get $3 + local.get $7 + i32.lt_s + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $3 + i32.const 3 + i32.shl + local.get $2 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $8 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 9520 + local.get $8 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + local.get $8 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|021 + end + end + local.get $9 + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + local.get $7 + i32.const 3 + i32.shl + local.get $2 + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $1 + br $folding-inner019 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $0 + local.get $1 i32.store - global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 13888 i32.store offset=8 - local.get $0 + local.get $1 i32.const 13888 call $~lib/string/String.__eq i32.eqz @@ -27267,12 +27121,12 @@ i32.store local.get $1 i32.load offset=4 - local.set $7 + local.set $2 local.get $1 i32.load offset=12 - local.set $2 - i32.const 0 local.set $1 + i32.const 0 + local.set $3 local.get $0 i32.const 12 i32.sub @@ -27289,10 +27143,10 @@ i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - local.get $2 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.const 0 i32.lt_s if @@ -27304,11 +27158,11 @@ local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $6 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load local.tee $0 i32.store @@ -27335,37 +27189,37 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|011 + local.set $7 + loop $for-loop|024 local.get $1 - local.get $6 - i32.lt_s + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $5 + local.tee $8 i32.store - local.get $5 + local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 call $~lib/array/Array#toString - local.set $5 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.store offset=8 local.get $0 - local.get $5 + local.get $8 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -27374,33 +27228,33 @@ local.tee $0 i32.store offset=4 end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|011 + local.set $3 + br $for-loop|024 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/array/Array#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -27482,12 +27336,12 @@ i32.store local.get $1 i32.load offset=4 - local.set $7 + local.set $2 local.get $1 i32.load offset=12 - local.set $2 - i32.const 0 local.set $1 + i32.const 0 + local.set $3 local.get $0 i32.const 12 i32.sub @@ -27504,10 +27358,10 @@ i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> - local.get $2 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.const 0 i32.lt_s if @@ -27519,11 +27373,11 @@ local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $6 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load local.tee $0 i32.store @@ -27550,37 +27404,37 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|01322 + local.set $7 + loop $for-loop|027 local.get $1 - local.get $6 - i32.lt_s + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $5 + local.tee $8 i32.store - local.get $5 + local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 call $~lib/array/Array#toString - local.set $5 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.store offset=8 local.get $0 - local.get $5 + local.get $8 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -27589,33 +27443,33 @@ local.tee $0 i32.store offset=4 end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|01322 + local.set $3 + br $for-loop|027 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/array/Array#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -27655,10 +27509,10 @@ i32.const 41 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=136 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=4 i32.store offset=128 global.get $~lib/memory/__stack_pointer @@ -27667,13 +27521,13 @@ i32.const 40 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store offset=124 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.load offset=4 i32.store offset=120 - local.get $1 + local.get $2 i32.const 0 i32.const 1 i32.const 2 @@ -27681,12 +27535,12 @@ i32.const 14416 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 - i32.const 0 local.get $1 + i32.const 0 + local.get $2 call $~lib/array/Array#__uset local.get $0 - local.get $2 + local.get $1 i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -27703,14 +27557,14 @@ local.get $0 i32.const 9520 i32.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=12 local.set $2 - i32.const 0 + local.get $1 + i32.load offset=12 local.set $1 + i32.const 0 + local.set $3 local.get $0 i32.const 12 i32.sub @@ -27727,10 +27581,10 @@ i32.const 0 i32.store offset=8 block $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.get $2 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.const 0 i32.lt_s if @@ -27742,11 +27596,11 @@ local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end - local.get $6 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.load local.tee $0 i32.store @@ -27773,37 +27627,37 @@ i32.load i32.const 1 i32.shr_u - local.set $4 - loop $for-loop|01523 + local.set $7 + loop $for-loop|030 local.get $1 - local.get $6 - i32.lt_s + local.get $3 + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $5 + local.tee $8 i32.store - local.get $5 + local.get $8 if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 call $~lib/array/Array<~lib/array/Array>#toString - local.set $5 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.store offset=8 local.get $0 - local.get $5 + local.get $8 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 end - local.get $4 + local.get $7 if global.get $~lib/memory/__stack_pointer local.get $0 @@ -27812,33 +27666,33 @@ local.tee $0 i32.store offset=4 end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|01523 + local.set $3 + br $for-loop|030 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 call $~lib/array/Array<~lib/array/Array>#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $1 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -27970,13 +27824,13 @@ i32.const 42 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $1 i32.store offset=160 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.load offset=4 i32.store offset=140 - local.get $2 + local.get $1 i32.const 0 i32.const 1 i32.const 2 @@ -27984,7 +27838,7 @@ i32.const 14608 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 + local.get $1 i32.const 1 i32.const 3 i32.const 2 @@ -27992,7 +27846,7 @@ i32.const 14704 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 + local.get $1 i32.const 2 i32.const 3 i32.const 2 @@ -28000,7 +27854,7 @@ i32.const 14832 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 + local.get $1 i32.const 3 i32.const 1 i32.const 2 @@ -28009,15 +27863,15 @@ call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 - local.get $2 + local.get $1 i32.store offset=140 global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 + local.set $3 i32.const 0 - local.set $8 + local.set $0 i32.const 0 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -28029,138 +27883,144 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $2 + local.get $1 i32.load offset=4 - local.set $6 - local.get $2 + local.set $8 + local.get $1 i32.load offset=12 - local.set $5 - loop $for-loop|0133 + local.set $1 + loop $for-loop|0217 local.get $1 - local.get $5 - i32.lt_s + local.get $3 + i32.gt_s if - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $6 + local.get $8 i32.add i32.load - local.tee $0 + local.tee $9 if (result i32) - local.get $0 + local.get $9 i32.load offset=12 else i32.const 0 end - local.get $8 + local.get $0 i32.add - local.set $8 - local.get $1 + local.set $0 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|0133 + local.set $3 + br $for-loop|0217 end end global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $0 i32.const 2 i32.shl - local.tee $1 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 31 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $10 i32.store offset=4 + local.get $10 local.get $0 - local.get $8 i32.store offset=12 - local.get $0 - local.get $1 + local.get $10 + local.get $3 i32.store offset=8 - local.get $0 - local.get $7 + local.get $10 + local.get $9 i32.store offset=4 - local.get $0 - local.get $7 + local.get $10 + local.get $9 i32.store - local.get $0 - local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $9 + if + local.get $10 + local.get $9 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end i32.const 0 - local.set $1 - loop $for-loop|1134 + local.set $3 + loop $for-loop|1218 local.get $1 - local.get $5 - i32.lt_s + local.get $3 + i32.gt_s if - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $6 + local.get $8 i32.add i32.load - local.tee $2 + local.tee $11 if - local.get $3 - local.get $7 - i32.add local.get $2 + local.get $9 + i32.add + local.get $11 i32.load offset=4 - local.get $2 + local.get $11 i32.load offset=12 i32.const 2 i32.shl - local.tee $2 + local.tee $11 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $11 i32.add - local.set $3 + local.set $2 end - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|1134 + local.set $3 + br $for-loop|1218 end end i32.const 0 - local.set $1 - loop $for-loop|2135 - local.get $1 - local.get $8 - i32.lt_s + local.set $3 + loop $for-loop|2219 + local.get $0 + local.get $3 + i32.gt_s if - local.get $7 - local.get $1 + local.get $3 i32.const 2 i32.shl - local.get $7 + local.get $9 i32.add i32.load - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 + local.tee $1 + if + local.get $9 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 1 i32.add - local.set $1 - br $for-loop|2135 + local.set $3 + br $for-loop|2219 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.tee $1 + local.get $10 i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28168,9 +28028,9 @@ i32.const 31 i32.const 14928 call $~lib/rt/__newArray - local.tee $5 + local.tee $1 i32.store offset=148 - local.get $0 + local.get $10 i32.load offset=12 i32.const 8 i32.ne @@ -28185,27 +28045,27 @@ i32.const 0 local.set $0 loop $for-loop|8 - local.get $5 + local.get $1 i32.load offset=12 local.get $0 i32.gt_s if - local.get $1 + local.get $10 local.get $0 call $~lib/array/Array#__get - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.store - local.get $5 + local.get $1 local.get $0 call $~lib/array/Array#__get - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 - local.get $4 local.get $2 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -28278,13 +28138,13 @@ i32.const 26 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $1 i32.store offset=144 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $1 i32.load offset=4 i32.store offset=152 - local.get $8 + local.get $1 i32.const 0 i32.const 1 i32.const 2 @@ -28292,7 +28152,7 @@ i32.const 15056 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $8 + local.get $1 i32.const 1 i32.const 1 i32.const 2 @@ -28301,14 +28161,14 @@ call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 - local.get $8 + local.get $1 i32.store offset=152 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15120 i32.store offset=164 i32.const 0 - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -28318,74 +28178,77 @@ i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 + local.get $2 local.get $1 - local.get $8 i32.load offset=12 - local.tee $7 + local.tee $2 i32.const 2 i32.const 26 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $7 i32.store - local.get $3 + local.get $7 i32.load offset=4 - local.set $5 - loop $for-loop|0163 - local.get $7 - local.get $8 - i32.load offset=12 - local.tee $1 + local.set $8 + loop $for-loop|033 + local.get $2 local.get $1 - local.get $7 - i32.gt_s + i32.load offset=12 + local.tee $9 + local.get $2 + local.get $9 + i32.lt_s select - local.get $0 + local.get $3 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $0 + local.tee $9 + local.get $3 i32.const 2 i32.shl - local.tee $2 - local.get $8 + local.tee $10 + local.get $1 i32.load offset=4 i32.add i32.load - local.tee $1 + local.tee $11 i32.store offset=4 i32.const 3 global.set $~argumentsLength - local.get $4 + local.get $9 + local.get $11 + local.get $3 local.get $1 - local.get $0 - local.get $8 i32.const 15120 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - local.tee $1 + local.tee $9 i32.store offset=8 - local.get $2 - local.get $5 + local.get $8 + local.get $10 i32.add - local.get $1 + local.get $9 i32.store + local.get $9 + if + local.get $7 + local.get $9 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 i32.const 1 i32.add - local.set $0 - br $for-loop|0163 + local.set $3 + br $for-loop|033 end end global.get $~lib/memory/__stack_pointer @@ -28393,9 +28256,9 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.store - local.get $3 + local.get $7 call $~lib/array/Array<~lib/array/Array>#flat local.tee $0 i32.store offset=144 @@ -28475,12 +28338,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|0165 + loop $while-continue|0224 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|0165 + br $while-continue|0224 end end end @@ -28571,7 +28434,7 @@ end local.get $0 i32.load offset=4 - local.set $0 + local.set $4 loop $while-continue|0 local.get $2 local.get $3 @@ -28581,12 +28444,12 @@ local.get $2 i32.const 2 i32.shl - local.get $0 + local.get $4 i32.add i32.load - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $1 call $~lib/string/String.__eq if @@ -28644,10 +28507,6 @@ i32.store local.get $1 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 i32.const 0 @@ -28675,27 +28534,30 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 - i32.const 0 local.get $3 + i32.const 0 + local.get $2 call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $1 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $3 i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 local.get $0 @@ -28745,7 +28607,6 @@ (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28762,52 +28623,55 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store + local.get $4 local.get $0 local.get $1 i32.shl local.tee $4 - local.set $6 + local.set $1 local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.set $1 + local.set $5 local.get $3 if - local.get $1 + local.get $5 local.get $3 - local.get $6 + local.get $1 call $~lib/memory/memory.copy end local.get $5 - local.get $1 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 + local.tee $1 + local.get $5 i32.store - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $5 + if + local.get $1 + local.get $5 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 + local.get $5 i32.store offset=4 - local.get $2 + local.get $1 local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $std/array/internalCapacity (param $0 i32) (result i32) (local $1 i32) @@ -28869,17 +28733,17 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + i32.load offset=12 + local.tee $3 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $3 - local.get $0 - i32.load offset=12 - local.tee $4 - i32.add local.tee $2 + i32.add + local.tee $4 i32.const 268435455 i32.gt_u if @@ -28891,19 +28755,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.load offset=4 local.tee $5 local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.const 2 i32.shl local.tee $0 @@ -28913,7 +28777,7 @@ i32.add local.get $1 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -28921,7 +28785,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -28998,14 +28862,14 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.load offset=4 @@ -29013,7 +28877,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -29021,7 +28885,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -29051,13 +28915,13 @@ local.get $2 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -29067,76 +28931,76 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $3 + local.tee $1 + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $5 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 - local.get $1 + local.tee $2 + local.get $4 i32.const 2 i32.shl i32.add local.tee $6 - local.get $2 + local.get $5 i32.const 2 i32.shl call $~lib/memory/memory.copy + local.get $3 local.get $4 - local.get $1 - local.get $2 + local.get $5 i32.add - local.tee $1 + local.tee $4 i32.ne if local.get $6 - local.get $1 + local.get $4 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add + local.get $3 local.get $4 - local.get $1 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $0 - local.get $4 - local.get $2 + local.get $3 + local.get $5 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 ) (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -29167,13 +29031,13 @@ i32.const 2 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -29183,76 +29047,76 @@ select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end - local.tee $1 + local.tee $5 i32.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 2 i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $3 i32.const 2 i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $6 i32.store - local.get $4 + local.get $6 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 - local.get $1 + local.tee $1 + local.get $5 i32.const 2 i32.shl i32.add - local.tee $6 - local.get $2 + local.tee $2 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy + local.get $4 local.get $3 - local.get $1 - local.get $2 + local.get $5 i32.add - local.tee $1 + local.tee $5 i32.ne if - local.get $6 - local.get $1 + local.get $2 + local.get $5 i32.const 2 i32.shl - local.get $5 - i32.add - local.get $3 local.get $1 + i32.add + local.get $4 + local.get $5 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $0 + local.get $4 local.get $3 - local.get $2 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $6 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -29382,38 +29246,38 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $5 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.load offset=4 - local.set $4 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $5 local.get $0 i32.load offset=12 - local.tee $5 - local.get $2 + local.tee $4 + local.get $4 local.get $5 - i32.lt_s + i32.gt_s select - local.get $3 + local.get $2 i32.gt_s if - local.get $3 + local.get $2 i32.const 2 i32.shl - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 i32.add @@ -29421,20 +29285,20 @@ local.set $6 i32.const 3 global.set $~argumentsLength + local.get $3 local.get $4 - local.get $5 i32.add local.get $6 - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -29464,58 +29328,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 2 i32.const 3 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $5 local.get $3 local.get $5 - i32.gt_s + i32.lt_s select - local.get $4 + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $4 + local.get $5 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/array/Array#push drop end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -29523,7 +29387,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $std/array/Dim#constructor (result i32) (local $0 i32) @@ -29673,31 +29537,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 local.get $0 call $~lib/array/Array#constructor - local.tee $1 + local.tee $2 i32.store loop $for-loop|0 local.get $0 - local.get $2 + local.get $1 i32.gt_s if - local.get $1 local.get $2 + local.get $1 local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $1 i32.sub call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -29705,7 +29569,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) (local $1 i32) @@ -29726,31 +29590,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 local.get $0 call $~lib/array/Array#constructor - local.tee $1 + local.tee $2 i32.store loop $for-loop|0 local.get $0 - local.get $2 + local.get $1 i32.gt_s if - local.get $1 local.get $2 + local.get $1 call $~lib/math/NativeMath.random local.get $0 f64.convert_i32_s f64.mul i32.trunc_f64_s call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -29758,7 +29622,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -29796,10 +29660,6 @@ i32.store local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -29839,10 +29699,13 @@ local.get $0 local.get $2 i32.store - local.get $0 local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $2 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $2 i32.store offset=4 @@ -29889,6 +29752,8 @@ i32.shr_u local.tee $2 local.get $2 + i32.const 0 + i32.gt_u select local.tee $3 local.get $1 @@ -29919,10 +29784,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $1 local.get $4 i32.sub - local.tee $1 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -29936,7 +29801,7 @@ local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $1 i32.eq local.get $4 select @@ -29949,22 +29814,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 local.get $0 local.get $4 i32.add - local.get $1 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -30006,71 +29871,71 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -30078,7 +29943,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) @@ -30113,68 +29978,67 @@ end global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 local.get $1 local.get $0 + local.get $2 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) (local $1 i32) @@ -30203,19 +30067,19 @@ i64.store local.get $0 i32.load offset=4 - local.set $5 + local.set $4 local.get $0 i32.load offset=12 - local.set $6 + local.set $5 loop $for-loop|0 local.get $2 - local.get $6 + local.get $5 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add i32.load local.tee $0 @@ -30242,7 +30106,7 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 @@ -30257,32 +30121,35 @@ local.get $2 i32.store offset=8 local.get $0 - local.get $4 + local.get $6 i32.store offset=4 local.get $0 - local.get $4 + local.get $6 i32.store - local.get $0 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $6 + if + local.get $0 + local.get $6 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end i32.const 0 local.set $2 loop $for-loop|1 local.get $2 - local.get $6 + local.get $5 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.get $5 + local.get $4 i32.add i32.load local.tee $3 if local.get $1 - local.get $4 + local.get $6 i32.add local.get $3 i32.load offset=4 @@ -30346,11 +30213,11 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -30372,7 +30239,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -30387,15 +30254,15 @@ i32.store end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -30414,10 +30281,6 @@ i32.store local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -30445,27 +30308,29 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 - i32.const 0 local.get $3 + i32.const 0 + local.get $4 call $~lib/memory/memory.fill local.get $0 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 local.get $1 @@ -30588,27 +30453,27 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s - select local.get $4 + i32.lt_s + select + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $4 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $2 local.get $4 + local.get $2 local.get $0 local.get $1 i32.load @@ -30616,10 +30481,10 @@ i32.eqz br_if $__inlined_func$~lib/array/Array#every drop - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -30656,18 +30521,18 @@ local.get $3 local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - local.set $4 - block $__inlined_func$~lib/array/Array#findIndex + block $__inlined_func$~lib/array/Array#findIndex (result i32) + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 - local.get $4 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $4 local.get $3 local.get $4 - i32.gt_s + i32.lt_s select local.get $2 i32.gt_s @@ -30679,14 +30544,18 @@ i32.shl i32.add i32.load + local.set $4 i32.const 3 global.set $~argumentsLength local.get $2 + local.get $4 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex + drop local.get $2 i32.const 1 i32.add @@ -30695,13 +30564,11 @@ end end i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) (func $export:~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -30728,12 +30595,12 @@ local.get $2 local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - block $__inlined_func$~lib/array/Array#findLastIndex + block $__inlined_func$~lib/array/Array#findLastIndex (result i32) + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 loop $for-loop|0 local.get $2 i32.const 0 @@ -30746,14 +30613,18 @@ i32.shl i32.add i32.load + local.set $3 i32.const 3 global.set $~argumentsLength local.get $2 + local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findLastIndex + drop local.get $2 i32.const 1 i32.sub @@ -30762,13 +30633,11 @@ end end i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -30800,7 +30669,8 @@ select local.get $1 i32.add - local.tee $1 + local.set $1 + local.get $1 local.get $2 i32.ge_u if @@ -30862,21 +30732,19 @@ i32.const 2147483647 local.set $3 end - local.get $1 - local.set $4 local.get $0 - local.tee $5 + local.tee $4 i32.load offset=4 - local.set $6 + local.set $5 local.get $0 i32.load offset=12 - local.set $1 + local.set $6 local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $1 local.get $2 + local.get $6 i32.add local.tee $0 i32.const 0 @@ -30886,10 +30754,10 @@ select else local.get $2 - local.get $1 - local.get $1 + local.get $6 local.get $2 - i32.gt_s + local.get $6 + i32.lt_s select end local.set $0 @@ -30897,35 +30765,35 @@ i32.const 0 i32.lt_s if (result i32) - local.get $1 local.get $3 + local.get $6 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select else local.get $3 - local.get $1 - local.get $1 + local.get $6 local.get $3 - i32.gt_s + local.get $6 + i32.lt_s select end - local.set $1 + local.set $2 loop $for-loop|0 local.get $0 - local.get $1 + local.get $2 i32.lt_s if local.get $0 i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add - local.get $4 + local.get $1 i32.store local.get $0 i32.const 1 @@ -30938,7 +30806,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 ) (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -30973,7 +30841,8 @@ i32.const 0 local.set $2 end - block $__inlined_func$~lib/array/Array#indexOf + block $__inlined_func$~lib/array/Array#indexOf (result i32) + i32.const -1 local.get $2 local.get $0 i32.load offset=12 @@ -30982,11 +30851,8 @@ i32.const 1 local.get $3 select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end + br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 0 i32.lt_s @@ -31010,6 +30876,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $1 local.get $2 i32.const 2 @@ -31019,6 +30886,7 @@ i32.load i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -31027,15 +30895,13 @@ end end i32.const -1 - local.set $2 end + i32.const 0 + i32.ge_s global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.ge_s ) (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -31070,7 +30936,8 @@ i32.const 0 local.set $2 end - block $__inlined_func$~lib/array/Array#indexOf + block $__inlined_func$~lib/array/Array#indexOf (result i32) + i32.const -1 local.get $2 local.get $0 i32.load offset=12 @@ -31079,11 +30946,8 @@ i32.const 1 local.get $3 select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end + br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 0 i32.lt_s @@ -31107,6 +30971,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $1 local.get $2 i32.const 2 @@ -31116,6 +30981,7 @@ i32.load i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -31124,17 +30990,14 @@ end end i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -31167,23 +31030,23 @@ i32.load offset=12 local.set $2 end - i32.const -1 - local.set $3 - block $__inlined_func$~lib/array/Array#lastIndexOf + block $__inlined_func$~lib/array/Array#lastIndexOf (result i32) + i32.const -1 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf + drop local.get $2 - local.get $4 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.get $2 local.get $2 - local.get $4 + local.get $3 i32.ge_s select local.get $2 @@ -31199,9 +31062,9 @@ i32.const 0 i32.ge_s if + local.get $2 local.get $1 local.get $2 - local.tee $3 i32.const 2 i32.shl local.get $0 @@ -31209,7 +31072,8 @@ i32.load i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $3 + drop + local.get $2 i32.const 1 i32.sub local.set $2 @@ -31217,13 +31081,11 @@ end end i32.const -1 - local.set $3 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -31257,11 +31119,11 @@ (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -31284,17 +31146,17 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $0 + i32.load offset=12 + local.tee $4 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $3 - local.get $0 - i32.load offset=12 - local.tee $4 - i32.add local.tee $2 + i32.add + local.tee $3 i32.const 268435455 i32.gt_u if @@ -31306,16 +31168,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $5 i32.store - local.get $2 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $3 local.get $0 i32.load offset=4 local.get $4 @@ -31324,11 +31186,11 @@ local.tee $0 call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $3 i32.add local.get $1 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -31340,7 +31202,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $5 return end i32.const 32064 @@ -31416,8 +31278,8 @@ local.get $0 i32.load offset=12 local.tee $1 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -31464,45 +31326,45 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -31516,23 +31378,23 @@ (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -31541,58 +31403,58 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $5 local.get $3 local.get $5 - i32.gt_s + i32.lt_s select - local.get $4 + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $4 + local.get $5 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/array/Array#push drop end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -31604,7 +31466,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 return end i32.const 32064 @@ -31639,9 +31501,9 @@ i32.store local.get $0 i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s + local.tee $3 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -31658,10 +31520,10 @@ local.get $2 i32.const 4 i32.add - local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $3 i32.const 2 i32.shl local.tee $4 @@ -31672,7 +31534,7 @@ i32.const 0 i32.store local.get $0 - local.get $1 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31713,37 +31575,37 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s - select local.get $4 + i32.lt_s + select + local.get $2 i32.gt_s if local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $2 + local.set $4 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $2 local.get $4 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -31783,11 +31645,11 @@ ) (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -31876,14 +31738,14 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.load offset=4 @@ -31891,7 +31753,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -31903,7 +31765,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -31918,11 +31780,11 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -31959,13 +31821,13 @@ local.get $2 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -31975,69 +31837,69 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $3 + local.tee $1 + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $1 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 - local.get $1 + local.tee $2 + local.get $4 i32.const 2 i32.shl i32.add local.tee $6 - local.get $2 + local.get $1 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $1 - local.get $2 + local.get $4 i32.add - local.tee $1 + local.tee $4 i32.ne if local.get $6 - local.get $1 + local.get $4 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add + local.get $3 local.get $4 - local.get $1 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $0 - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -32048,7 +31910,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 32064 @@ -32085,52 +31947,52 @@ i32.store local.get $0 i32.load offset=4 - local.set $4 + local.set $2 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $4 i32.const 1 i32.gt_u if - local.get $1 + local.get $4 i32.const 1 i32.shr_u - local.set $5 - local.get $1 + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $1 + local.set $5 loop $while-continue|0 - local.get $2 - local.get $5 + local.get $1 + local.get $3 i32.lt_u if - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add - local.tee $3 + local.tee $6 i32.load - local.set $6 - local.get $3 + local.set $4 + local.get $6 + local.get $5 local.get $1 - local.get $2 i32.sub i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add - local.tee $3 + local.tee $6 i32.load i32.store - local.get $3 local.get $6 + local.get $4 i32.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end @@ -32175,11 +32037,11 @@ ) (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -32296,11 +32158,11 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -32322,7 +32184,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -32337,15 +32199,15 @@ i32.store end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15652 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -32364,10 +32226,6 @@ i32.store local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -32393,27 +32251,29 @@ i32.const 8 i32.gt_u select - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 - i32.const 0 local.get $3 + i32.const 0 + local.get $4 call $~lib/memory/memory.fill local.get $0 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link_0 + end local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - local.get $2 + local.get $3 i32.store offset=4 local.get $0 - local.get $3 + local.get $4 i32.store offset=8 local.get $0 local.get $1 @@ -32508,25 +32368,25 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s - select local.get $4 + i32.lt_s + select + local.get $2 i32.gt_s if - local.get $4 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u - local.set $2 + local.set $4 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $2 local.get $4 + local.get $2 local.get $0 local.get $1 i32.load @@ -32534,10 +32394,10 @@ i32.eqz br_if $__inlined_func$~lib/array/Array#every drop - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -32574,18 +32434,18 @@ local.get $3 local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - local.set $4 - block $__inlined_func$~lib/array/Array#findIndex + block $__inlined_func$~lib/array/Array#findIndex (result i32) + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 - local.get $4 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $4 local.get $3 local.get $4 - i32.gt_s + i32.lt_s select local.get $2 i32.gt_s @@ -32595,14 +32455,18 @@ i32.load offset=4 i32.add i32.load8_u + local.set $4 i32.const 3 global.set $~argumentsLength local.get $2 + local.get $4 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findIndex + drop local.get $2 i32.const 1 i32.add @@ -32611,13 +32475,11 @@ end end i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) (func $export:~lib/array/Array#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -32644,12 +32506,12 @@ local.get $2 local.get $1 i32.store offset=4 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - block $__inlined_func$~lib/array/Array#findLastIndex + block $__inlined_func$~lib/array/Array#findLastIndex (result i32) + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 loop $for-loop|0 local.get $2 i32.const 0 @@ -32660,14 +32522,18 @@ i32.load offset=4 i32.add i32.load8_u + local.set $3 i32.const 3 global.set $~argumentsLength local.get $2 + local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#findLastIndex + drop local.get $2 i32.const 1 i32.sub @@ -32676,13 +32542,11 @@ end end i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) (func $export:~lib/array/Array#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -32714,7 +32578,8 @@ select local.get $1 i32.add - local.tee $1 + local.set $1 + local.get $1 local.get $2 i32.ge_u if @@ -32814,104 +32679,8 @@ i32.const 0 local.set $2 end - block $__inlined_func$~lib/array/Array#indexOf - local.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end - local.get $2 - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end + block $__inlined_func$~lib/array/Array#indexOf (result i32) i32.const -1 - local.set $2 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.ge_s - ) - (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - 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 15652 - i32.lt_s - if - i32.const 32064 - i32.const 32112 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $2 - end - block $__inlined_func$~lib/array/Array#indexOf local.get $2 local.get $0 i32.load offset=12 @@ -32920,11 +32689,8 @@ i32.const 1 local.get $3 select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end + br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 0 i32.lt_s @@ -32948,6 +32714,7 @@ local.get $3 i32.lt_s if + local.get $2 local.get $0 local.get $2 i32.add @@ -32957,6 +32724,7 @@ i32.and i32.eq br_if $__inlined_func$~lib/array/Array#indexOf + drop local.get $2 i32.const 1 i32.add @@ -32965,17 +32733,109 @@ end end i32.const -1 + end + i32.const 0 + i32.ge_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + 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 15652 + i32.lt_s + if + i32.const 32064 + i32.const 32112 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 local.set $2 end + block $__inlined_func$~lib/array/Array#indexOf (result i32) + i32.const -1 + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + br_if $__inlined_func$~lib/array/Array#indexOf + drop + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $__inlined_func$~lib/array/Array#indexOf + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 ) (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -33008,23 +32868,23 @@ i32.load offset=12 local.set $2 end - i32.const -1 - local.set $3 - block $__inlined_func$~lib/array/Array#lastIndexOf + block $__inlined_func$~lib/array/Array#lastIndexOf (result i32) + i32.const -1 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf + drop local.get $2 - local.get $4 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.get $2 local.get $2 - local.get $4 + local.get $3 i32.ge_s select local.get $2 @@ -33041,8 +32901,8 @@ i32.ge_s if local.get $2 - local.tee $3 local.get $0 + local.get $2 i32.add i32.load8_u local.get $1 @@ -33050,7 +32910,8 @@ i32.and i32.eq br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $3 + drop + local.get $2 i32.const 1 i32.sub local.set $2 @@ -33058,13 +32919,11 @@ end end i32.const -1 - local.set $3 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 ) (func $export:~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -33098,11 +32957,11 @@ (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -33133,9 +32992,9 @@ i32.const 0 local.get $1 select - local.tee $4 - i32.add local.tee $3 + i32.add + local.tee $4 i32.const 1073741820 i32.gt_u if @@ -33147,26 +33006,26 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $4 local.get $0 i32.load offset=4 local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $5 + local.get $4 i32.add local.get $1 i32.load offset=4 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -33176,7 +33035,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 32064 @@ -33189,7 +33048,6 @@ (func $export:~lib/array/Array#copyWithin@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -33223,14 +33081,13 @@ end local.get $3 local.get $0 - local.tee $4 i32.load offset=12 - local.tee $5 + local.tee $4 local.get $3 - local.get $5 + local.get $4 i32.lt_s select - local.set $6 + local.set $5 local.get $0 i32.load offset=4 local.tee $3 @@ -33239,19 +33096,19 @@ i32.lt_s if (result i32) local.get $1 - local.get $5 + local.get $4 i32.add - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select else local.get $1 - local.get $5 + local.get $4 local.get $1 - local.get $5 + local.get $4 i32.lt_s select end @@ -33262,63 +33119,63 @@ i32.lt_s if (result i32) local.get $2 - local.get $5 + local.get $4 i32.add - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select else local.get $2 - local.get $5 + local.get $4 local.get $2 - local.get $5 + local.get $4 i32.lt_s select end - local.tee $0 + local.tee $2 local.get $3 i32.add - local.get $6 + local.get $5 i32.const 0 i32.lt_s if (result i32) + local.get $4 local.get $5 - local.get $6 i32.add - local.tee $2 + local.tee $3 i32.const 0 - local.get $2 + local.get $3 i32.const 0 i32.gt_s select else - local.get $6 local.get $5 + local.get $4 + local.get $4 local.get $5 - local.get $6 i32.gt_s select end - local.get $0 + local.get $2 i32.sub - local.tee $0 - local.get $5 + local.tee $2 + local.get $4 local.get $1 i32.sub local.tee $1 - local.get $0 local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 ) (func $export:~lib/array/Array#pop (param $0 i32) (result i32) (local $1 i32) @@ -33344,8 +33201,8 @@ local.get $0 i32.load offset=12 local.tee $1 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -33390,43 +33247,43 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if - local.get $3 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -33440,23 +33297,23 @@ (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -33465,56 +33322,56 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 + local.get $3 i32.const 0 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $5 local.get $3 local.get $5 - i32.gt_s + i32.lt_s select - local.get $4 + local.get $2 i32.gt_s if - local.get $4 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u - local.set $3 + local.set $5 i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $4 + local.get $5 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/array/Array#push drop end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -33526,7 +33383,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 return end i32.const 32064 @@ -33560,9 +33417,9 @@ i32.store local.get $0 i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s + local.tee $3 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -33579,18 +33436,18 @@ local.get $2 i32.const 1 i32.add - local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $3 call $~lib/memory/memory.copy - local.get $1 local.get $2 + local.get $3 i32.add i32.const 0 i32.store8 local.get $0 - local.get $1 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -33631,35 +33488,35 @@ local.get $3 local.get $0 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $4 local.get $3 - i32.gt_s - select local.get $4 + i32.lt_s + select + local.get $2 i32.gt_s if - local.get $4 + local.get $2 local.get $0 i32.load offset=4 i32.add i32.load8_u - local.set $2 + local.set $4 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $2 local.get $4 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/array/Array#some drop - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -33724,11 +33581,11 @@ ) (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -33817,20 +33674,20 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.get $1 local.get $0 i32.load offset=4 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -33840,7 +33697,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return end i32.const 32064 @@ -33855,11 +33712,11 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -33896,13 +33753,13 @@ local.get $2 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -33912,61 +33769,61 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $3 + local.tee $1 + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.load offset=4 - local.get $1 + local.get $4 local.get $0 i32.load offset=4 - local.tee $5 + local.tee $2 i32.add local.tee $6 - local.get $2 + local.get $1 call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $1 - local.get $2 + local.get $4 i32.add - local.tee $1 + local.tee $4 i32.ne if local.get $6 - local.get $1 - local.get $5 + local.get $2 + local.get $4 i32.add + local.get $3 local.get $4 - local.get $1 i32.sub call $~lib/memory/memory.copy end local.get $0 - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -33977,7 +33834,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 32064 @@ -34007,19 +33864,23 @@ local.get $0 i32.store local.get $0 - call $~lib/array/Array#reverse + i32.load offset=4 + local.get $0 + i32.load offset=12 + call $~lib/util/bytes/REVERSE global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -34082,11 +33943,11 @@ ) (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -34170,11 +34031,11 @@ global.set $~lib/memory/__stack_pointer ) (func $export:std/array/ArrayStr#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -34242,24 +34103,24 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 block $__inlined_func$~lib/array/Array<~lib/string/String>#every (result i32) - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -34272,23 +34133,23 @@ i32.store local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add @@ -34298,7 +34159,7 @@ i32.const 3 global.set $~argumentsLength local.get $4 - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load @@ -34312,10 +34173,10 @@ i32.const 0 br $__inlined_func$~lib/array/Array<~lib/string/String>#every end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -34342,11 +34203,11 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -34358,21 +34219,21 @@ local.get $3 local.get $1 i32.store offset=4 - local.get $3 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - local.set $3 - block $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex + block $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex (result i32) + local.get $3 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 loop $for-loop|0 local.get $3 local.get $0 @@ -34408,6 +34269,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 br $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex end local.get $2 @@ -34422,13 +34284,11 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 return end i32.const 32064 @@ -34441,11 +34301,11 @@ (func $export:~lib/array/Array<~lib/string/String>#findLastIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -34457,23 +34317,23 @@ local.get $2 local.get $1 i32.store offset=4 - local.get $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - block $__inlined_func$~lib/array/Array<~lib/string/String>#findLastIndex + block $__inlined_func$~lib/array/Array<~lib/string/String>#findLastIndex (result i32) + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $2 loop $for-loop|0 local.get $2 i32.const 0 @@ -34502,6 +34362,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 br $__inlined_func$~lib/array/Array<~lib/string/String>#findLastIndex end local.get $2 @@ -34516,13 +34377,11 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 return end i32.const 32064 @@ -34534,11 +34393,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#at (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -34721,10 +34580,13 @@ i32.add local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 i32.const 1 i32.add @@ -34834,11 +34696,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -34864,18 +34726,18 @@ i32.load offset=12 local.set $2 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 15652 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf (result i32) + 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 15652 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.load offset=12 local.tee $3 @@ -34886,7 +34748,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf end local.get $2 @@ -34930,6 +34791,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf end local.get $2 @@ -34944,13 +34806,11 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 return end i32.const 32064 @@ -34999,26 +34859,24 @@ (local $5 i32) (local $6 i32) (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer + (local $8 i32) block $folding-inner0 + 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 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.tee $2 + local.tee $4 local.get $0 i32.store - local.get $2 + local.get $4 local.get $1 i32.store offset=4 - i32.const 0 - local.set $2 - local.get $3 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -35031,7 +34889,7 @@ i32.store local.get $0 i32.load offset=12 - local.tee $4 + local.tee $5 local.get $1 i32.load offset=12 i32.const 0 @@ -35039,7 +34897,7 @@ select local.tee $6 i32.add - local.tee $3 + local.tee $4 i32.const 268435455 i32.gt_u if @@ -35051,83 +34909,87 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $7 i32.store - local.get $3 + local.get $7 i32.load offset=4 - local.set $5 - local.get $4 + local.set $4 + local.get $5 i32.const 2 i32.shl - local.set $4 + local.set $5 local.get $0 i32.load offset=4 local.set $0 loop $for-loop|0 - local.get $2 - local.get $4 + local.get $3 + local.get $5 i32.lt_u if - local.get $2 - local.get $5 + local.get $3 + local.get $4 i32.add local.get $0 - local.get $2 + local.get $3 i32.add i32.load - local.tee $7 + local.tee $8 i32.store + local.get $8 + if + local.get $7 + local.get $8 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 i32.const 4 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end local.get $4 local.get $5 i32.add - local.set $2 + local.set $0 local.get $1 i32.load offset=4 local.set $1 local.get $6 i32.const 2 i32.shl - local.set $5 - i32.const 0 - local.set $0 + local.set $3 loop $for-loop|1 - local.get $0 - local.get $5 + local.get $2 + local.get $3 i32.lt_u if local.get $0 local.get $2 i32.add - local.get $0 local.get $1 + local.get $2 i32.add i32.load local.tee $4 i32.store - local.get $3 local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $7 + local.get $4 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end @@ -35139,7 +35001,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $7 return end i32.const 32064 @@ -35153,11 +35015,11 @@ (local $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -35179,9 +35041,9 @@ i32.store local.get $0 i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s + local.tee $2 + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -35191,13 +35053,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 local.get $0 i32.load offset=4 - local.get $1 + local.get $2 i32.const 1 i32.sub - local.tee $1 + local.tee $2 i32.const 2 i32.shl i32.add @@ -35205,9 +35067,9 @@ local.tee $3 i32.store local.get $0 - local.get $1 - i32.store offset=12 local.get $2 + i32.store offset=12 + local.get $1 i32.const 4 i32.add global.set $~lib/memory/__stack_pointer @@ -35229,23 +35091,23 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -35258,23 +35120,23 @@ i32.store local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add @@ -35284,15 +35146,15 @@ i32.const 3 global.set $~argumentsLength local.get $4 - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -35318,23 +35180,23 @@ (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 - local.get $2 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -35343,60 +35205,60 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i32.const 0 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store local.get $0 i32.load offset=12 - local.set $5 + local.set $3 loop $for-loop|0 - local.get $5 + local.get $3 local.get $0 i32.load offset=12 - local.tee $3 + local.tee $5 local.get $3 local.get $5 - i32.gt_s + i32.lt_s select - local.get $4 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.get $4 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $3 + local.tee $5 i32.store offset=4 i32.const 3 global.set $~argumentsLength - local.get $3 - local.get $4 + local.get $5 + local.get $2 local.get $0 local.get $1 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.get $3 + local.get $4 + local.get $5 call $~lib/array/Array<~lib/string/String>#push drop end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end @@ -35408,7 +35270,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 return end i32.const 32064 @@ -35423,11 +35285,11 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -35450,8 +35312,8 @@ local.get $0 i32.load offset=12 local.tee $2 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if i32.const 2176 i32.const 1104 @@ -35509,24 +35371,24 @@ (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store - local.get $2 + local.get $3 local.get $1 i32.store offset=4 block $__inlined_func$~lib/array/Array<~lib/string/String>#some (result i32) - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -35539,23 +35401,23 @@ i32.store local.get $0 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|0 - local.get $2 + local.get $3 local.get $0 i32.load offset=12 local.tee $4 - local.get $2 + local.get $3 local.get $4 i32.lt_s select - local.get $3 + local.get $2 i32.gt_s if global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add @@ -35565,7 +35427,7 @@ i32.const 3 global.set $~argumentsLength local.get $4 - local.get $3 + local.get $2 local.get $0 local.get $1 i32.load @@ -35578,10 +35440,10 @@ i32.const 1 br $__inlined_func$~lib/array/Array<~lib/string/String>#some end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -35634,37 +35496,40 @@ i32.load offset=12 i32.const 1 i32.add - local.tee $2 + local.tee $3 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity local.get $0 i32.load offset=4 - local.tee $3 + local.tee $2 i32.const 4 i32.add - local.get $3 local.get $2 + local.get $3 i32.const 1 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $2 local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $2 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $export:~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -35710,13 +35575,13 @@ i32.store local.get $0 i32.load offset=12 - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -35726,9 +35591,9 @@ select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end @@ -35739,7 +35604,7 @@ i32.lt_s if (result i32) local.get $2 - local.get $3 + local.get $4 i32.add local.tee $2 i32.const 0 @@ -35749,9 +35614,9 @@ select else local.get $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select end @@ -35763,51 +35628,52 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.load offset=4 - local.set $4 + local.set $5 local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - local.set $1 - i32.const 0 local.set $0 - local.get $3 + local.get $2 i32.const 2 i32.shl - local.set $3 + local.set $1 loop $while-continue|0 - local.get $0 + local.get $1 local.get $3 - i32.lt_u + i32.gt_u if - local.get $0 - local.get $4 + local.get $3 + local.get $5 i32.add local.get $0 - local.get $1 + local.get $3 i32.add i32.load - local.tee $5 + local.tee $2 i32.store local.get $2 - local.get $5 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $4 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.add - local.set $0 + local.set $3 br $while-continue|0 end end @@ -35819,7 +35685,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 return end i32.const 32064 @@ -35834,11 +35700,11 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -35875,13 +35741,13 @@ local.get $2 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -35891,69 +35757,69 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $4 i32.sub - local.tee $3 + local.tee $1 + local.get $1 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s select - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $1 i32.const 2 i32.const 33 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $5 i32.store - local.get $3 + local.get $5 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 - local.get $1 + local.tee $2 + local.get $4 i32.const 2 i32.shl i32.add local.tee $6 - local.get $2 + local.get $1 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $3 local.get $1 - local.get $2 + local.get $4 i32.add - local.tee $1 + local.tee $4 i32.ne if local.get $6 - local.get $1 + local.get $4 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add + local.get $3 local.get $4 - local.get $1 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end local.get $0 - local.get $4 - local.get $2 + local.get $3 + local.get $1 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -35964,7 +35830,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 return end i32.const 32064 @@ -35981,11 +35847,11 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -35996,10 +35862,10 @@ i32.store local.get $0 i32.load offset=4 - local.set $5 + local.set $2 local.get $0 i32.load offset=12 - local.set $1 + local.set $4 local.get $3 i32.const 4 i32.sub @@ -36011,51 +35877,51 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $4 i32.const 1 i32.gt_u if - local.get $1 + local.get $4 i32.const 1 i32.shr_u - local.set $3 - local.get $1 + local.set $5 + local.get $4 i32.const 1 i32.sub - local.set $1 + local.set $4 loop $while-continue|0 - local.get $2 - local.get $3 + local.get $1 + local.get $5 i32.lt_u if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add - local.tee $4 - i32.load local.tee $6 + i32.load + local.tee $3 i32.store + local.get $6 local.get $4 local.get $1 - local.get $2 i32.sub i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add - local.tee $4 + local.tee $6 i32.load i32.store - local.get $4 local.get $6 + local.get $3 i32.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end @@ -36080,11 +35946,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -36147,11 +36013,11 @@ ) (func $export:~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 15652 i32.lt_s @@ -36234,4 +36100,126 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link_0 (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 9558268068..22c90ca44a 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -48,11 +48,11 @@ (local $0 i32) (local $1 i32) i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -119,7 +119,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -142,7 +142,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -152,15 +152,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -225,30 +225,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -285,11 +261,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -301,28 +276,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -334,19 +306,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -371,9 +343,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -381,17 +353,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -519,7 +491,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -530,7 +502,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -550,44 +522,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -597,7 +568,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -607,20 +578,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -648,7 +619,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -675,15 +646,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -695,15 +663,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -724,6 +692,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -733,7 +704,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -770,8 +741,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -930,7 +901,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1055,7 +1030,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1065,7 +1040,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1078,14 +1053,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1110,56 +1084,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1307,14 +1278,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1324,17 +1295,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1350,22 +1321,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1376,11 +1347,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1475,10 +1446,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1486,7 +1453,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1497,54 +1467,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1552,16 +1518,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1570,7 +1536,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1578,9 +1544,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1591,11 +1557,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1606,12 +1572,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1624,89 +1590,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1714,7 +1680,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1735,17 +1701,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1891,19 +1857,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1918,7 +1884,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1929,10 +1895,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1940,10 +1906,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1954,7 +1920,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1984,17 +1950,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2009,7 +1975,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2020,10 +1986,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2031,10 +1997,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2045,7 +2011,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2071,17 +2037,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2096,7 +2062,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2107,10 +2073,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2118,10 +2084,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2132,7 +2098,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2169,131 +2135,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2310,59 +2254,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2379,7 +2317,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2390,11 +2328,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2408,17 +2346,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2623,81 +2561,20 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/rt/__visit_members (param $0 i32) block $folding-inner1 block $folding-inner0 block $invalid - block $~lib/array/Array - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/array/Array $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $invalid end return end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit return end unreachable @@ -2707,7 +2584,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2716,7 +2593,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -2736,13 +2613,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 memory.size @@ -2777,7 +2654,7 @@ i32.store i32.const 1456 global.set $~lib/rt/itcms/fromSpace - local.get $1 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2786,26 +2663,26 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 8 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -2820,13 +2697,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 0 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2852,13 +2729,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2873,13 +2750,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -1 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2894,13 +2771,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2915,13 +2792,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2936,13 +2813,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -3 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2957,13 +2834,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const -4 i32.const 42 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2978,13 +2855,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 42 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2996,7 +2873,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -3007,8 +2884,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3017,26 +2894,26 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3047,7 +2924,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store i32.const 8 @@ -3057,25 +2934,28 @@ i32.const 1632 i32.const 8 call $~lib/memory/memory.copy - local.get $0 + local.get $1 local.get $2 i32.store i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 local.get $2 i32.store - local.get $0 local.get $2 - call $~lib/rt/itcms/__link - local.get $0 + if + local.get $1 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 local.get $2 i32.store offset=4 - local.get $0 + local.get $1 i32.const 8 i32.store offset=8 - local.get $0 + local.get $1 i32.const 2 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -3083,7 +2963,7 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3094,38 +2974,38 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3135,34 +3015,31 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $2 i32.const 0 i32.store - local.get $0 + local.get $2 i32.const 12 i32.const 15 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store - local.get $0 + local.get $2 i32.const 0 i32.store - local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 + local.get $2 i32.const 0 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 - local.get $2 local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.gt_u - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u i32.or @@ -3174,24 +3051,27 @@ call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 - local.get $1 i32.store local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 local.get $0 - local.get $1 i32.store offset=4 - local.get $0 local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=12 i32.const 18228 global.set $~lib/memory/__stack_pointer @@ -3318,22 +3198,22 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $0 local.get $1 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3370,9 +3250,6 @@ i32.store local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -3380,8 +3257,7 @@ i32.const 1073741820 local.get $1 i32.shr_u - i32.const 1 - i32.lt_u + i32.eqz if i32.const 1056 i32.const 1104 @@ -3394,25 +3270,28 @@ i32.const 1 local.get $1 i32.shl - local.tee $2 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $1 local.get $2 + local.get $1 call $~lib/memory/memory.fill local.get $0 - local.get $1 + local.get $2 i32.store + local.get $2 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3420,4 +3299,72 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 25c85b01f1..cbd3c5fff7 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -2,9 +2,9 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -54,11 +54,11 @@ (local $0 i32) (local $1 i32) i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -125,7 +125,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -148,7 +148,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -158,15 +158,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -231,30 +231,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -291,11 +267,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -307,28 +282,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -340,19 +312,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -377,9 +349,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -387,17 +359,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -525,7 +497,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -536,7 +508,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -556,44 +528,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -603,7 +574,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -613,20 +584,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -654,7 +625,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -681,15 +652,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -701,15 +669,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -730,6 +698,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -739,7 +710,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -776,8 +747,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -936,7 +907,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1061,7 +1036,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1071,7 +1046,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1084,14 +1059,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1116,56 +1090,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1313,14 +1284,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1330,17 +1301,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1356,22 +1327,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1382,11 +1353,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1481,10 +1452,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1492,7 +1459,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1503,54 +1473,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1558,16 +1524,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1576,7 +1542,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1584,9 +1550,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1597,11 +1563,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1612,12 +1578,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1630,89 +1596,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1720,7 +1686,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1728,61 +1694,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=8 @@ -1942,21 +1853,18 @@ i32.load offset=4 i32.add i32.load16_s - local.set $0 + local.tee $0 + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or local.get $2 - if (result i32) - local.get $0 - else - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.or - end + select ) (func $~lib/dataview/DataView#getInt32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 @@ -2091,21 +1999,18 @@ i32.load offset=4 i32.add i32.load16_u - local.set $0 + local.tee $0 + local.get $0 + i32.const 8 + i32.shl + local.get $0 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or local.get $2 - if (result i32) - local.get $0 - else - local.get $0 - i32.const 8 - i32.shl - local.get $0 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.or - end + select ) (func $~lib/dataview/DataView#getUint32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 @@ -2302,20 +2207,18 @@ end local.get $0 i32.load offset=4 + local.get $1 + local.get $1 + i32.const 8 + i32.shl + local.get $1 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - i32.const 8 - i32.shl - local.get $1 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.or - end + select i32.store16 ) (func $~lib/dataview/DataView#setInt32 (param $0 i32) (param $1 i32) (param $2 i32) @@ -2412,20 +2315,18 @@ end local.get $0 i32.load offset=4 + local.get $1 + local.get $1 + i32.const 8 + i32.shl + local.get $1 + i32.const 65535 + i32.and + i32.const 8 + i32.shr_u + i32.or local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - i32.const 8 - i32.shl - local.get $1 - i32.const 65535 - i32.and - i32.const 8 - i32.shr_u - i32.or - end + select i32.store16 ) (func $~lib/dataview/DataView#setUint32 (param $0 i32) (param $1 i32) (param $2 i32) @@ -2529,7 +2430,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -2540,6 +2441,8 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -2550,10 +2453,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $5 i64.const 0 i64.store - local.get $0 + local.get $5 i32.const 0 i32.store offset=8 memory.size @@ -2588,7 +2491,7 @@ i32.store i32.const 1456 global.set $~lib/rt/itcms/fromSpace - local.get $0 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2597,14 +2500,14 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -2618,112 +2521,156 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 2 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store end - local.get $1 + local.get $0 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store offset=4 - local.get $2 + local.get $4 i32.const 8 call $~lib/memory/memory.fill - local.get $1 - local.get $2 + local.get $0 + local.get $4 i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $4 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $4 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $0 + local.get $4 i32.store offset=4 - local.get $1 + local.get $0 i32.const 8 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 local.get $0 - local.get $1 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 246 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 224 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 88 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 159 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 130 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 5 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 6 i32.const 67 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 7 i32.const 95 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.load - local.tee $0 + local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $0 local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub - local.get $1 + local.get $0 i32.load offset=8 call $~lib/dataview/DataView#constructor - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2737,7 +2684,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2751,7 +2698,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2765,7 +2712,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2779,7 +2726,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2793,7 +2740,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2807,7 +2754,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2821,7 +2768,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2835,7 +2782,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2849,7 +2796,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2863,7 +2810,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getFloat64 f64.const 7936550095674706383278551e126 @@ -2876,7 +2823,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getFloat64 f64.const -411777475818852546741639e241 @@ -2889,7 +2836,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const -10 @@ -2902,7 +2849,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getInt8 i32.const -32 @@ -2915,7 +2862,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/dataview/DataView#getInt8 i32.const 88 @@ -2928,7 +2875,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 call $~lib/dataview/DataView#getInt8 i32.const -97 @@ -2941,7 +2888,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 call $~lib/dataview/DataView#getInt8 i32.const -126 @@ -2954,7 +2901,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 call $~lib/dataview/DataView#getInt8 i32.const 101 @@ -2967,7 +2914,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 call $~lib/dataview/DataView#getInt8 i32.const 67 @@ -2980,7 +2927,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 7 call $~lib/dataview/DataView#getInt8 i32.const 95 @@ -2993,7 +2940,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3009,7 +2956,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3025,7 +2972,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3041,7 +2988,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3057,7 +3004,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3073,7 +3020,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3089,7 +3036,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3105,7 +3052,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3121,7 +3068,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3137,7 +3084,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3153,7 +3100,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3169,7 +3116,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3185,7 +3132,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3201,7 +3148,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3217,7 +3164,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3231,7 +3178,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3245,7 +3192,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3259,7 +3206,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3273,7 +3220,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3287,7 +3234,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3301,7 +3248,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3315,7 +3262,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3329,7 +3276,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3343,7 +3290,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3357,7 +3304,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getInt64 i64.const 6864441868736323830 @@ -3370,7 +3317,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getInt64 i64.const -657428103485373601 @@ -3383,7 +3330,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 246 @@ -3396,7 +3343,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getUint8 i32.const 224 @@ -3409,7 +3356,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/dataview/DataView#getUint8 i32.const 88 @@ -3422,7 +3369,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 call $~lib/dataview/DataView#getUint8 i32.const 159 @@ -3435,7 +3382,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 call $~lib/dataview/DataView#getUint8 i32.const 130 @@ -3448,7 +3395,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 call $~lib/dataview/DataView#getUint8 i32.const 101 @@ -3461,7 +3408,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 call $~lib/dataview/DataView#getUint8 i32.const 67 @@ -3474,7 +3421,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 7 call $~lib/dataview/DataView#getUint8 i32.const 95 @@ -3487,7 +3434,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3503,7 +3450,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3519,7 +3466,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3535,7 +3482,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3551,7 +3498,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3567,7 +3514,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3583,7 +3530,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3599,7 +3546,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3615,7 +3562,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3631,7 +3578,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3647,7 +3594,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3663,7 +3610,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3679,7 +3626,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3695,7 +3642,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3711,7 +3658,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3725,7 +3672,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3739,7 +3686,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3753,7 +3700,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3767,7 +3714,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3781,7 +3728,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3795,7 +3742,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3809,7 +3756,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3823,7 +3770,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3837,7 +3784,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3851,7 +3798,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getUint64 i64.const 6864441868736323830 @@ -3864,7 +3811,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getUint64 i64.const -657428103485373601 @@ -3877,11 +3824,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.const 1.5976661625240943e-18 i32.const 1 call $~lib/dataview/DataView#setFloat32 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -3895,11 +3842,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.const 1976281973381696323584 i32.const 0 call $~lib/dataview/DataView#setFloat32 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -3913,11 +3860,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.const -1094252199637739024055454e124 i32.const 1 call $~lib/dataview/DataView#setFloat64 - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getFloat64 f64.const -1094252199637739024055454e124 @@ -3930,11 +3877,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.const 6.022586634778589e-103 i32.const 0 call $~lib/dataview/DataView#setFloat64 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getFloat64 f64.const 6.022586634778589e-103 @@ -3947,7 +3894,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.eqz if @@ -3958,11 +3905,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 i32.const 108 i32.store8 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const 108 @@ -3975,11 +3922,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -13360 i32.const 1 call $~lib/dataview/DataView#setInt16 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3995,11 +3942,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 14689 i32.const 0 call $~lib/dataview/DataView#setInt16 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -4015,11 +3962,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1204680201 i32.const 1 call $~lib/dataview/DataView#setInt32 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -4033,11 +3980,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 660673230 i32.const 0 call $~lib/dataview/DataView#setInt32 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -4051,11 +3998,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const -3290739641816099749 i32.const 1 call $~lib/dataview/DataView#setInt64 - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getInt64 i64.const -3290739641816099749 @@ -4068,11 +4015,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 8178932412950708047 i32.const 0 call $~lib/dataview/DataView#setInt64 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getInt64 i64.const 8178932412950708047 @@ -4085,7 +4032,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.eqz if @@ -4096,11 +4043,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 i32.const 238 i32.store8 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 238 @@ -4113,11 +4060,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 58856 i32.const 1 call $~lib/dataview/DataView#setUint16 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -4133,11 +4080,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 60400 i32.const 0 call $~lib/dataview/DataView#setUint16 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -4153,11 +4100,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -846805744 i32.const 1 call $~lib/dataview/DataView#setUint32 - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -4171,11 +4118,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const -1510791631 i32.const 0 call $~lib/dataview/DataView#setUint32 - local.get $0 + local.get $1 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -4189,11 +4136,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 2334704782995986958 i32.const 1 call $~lib/dataview/DataView#setUint64 - local.get $0 + local.get $1 i32.const 1 call $~lib/dataview/DataView#getUint64 i64.const 2334704782995986958 @@ -4206,11 +4153,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const -7123186897289856329 i32.const 0 call $~lib/dataview/DataView#setUint64 - local.get $0 + local.get $1 i32.const 0 call $~lib/dataview/DataView#getUint64 i64.const -7123186897289856329 @@ -4224,24 +4171,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.load local.tee $1 - i32.store offset=4 local.get $0 + i32.load + local.tee $0 + i32.store offset=4 local.get $1 + local.get $0 i32.const 0 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 call $~lib/dataview/DataView#constructor - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub if @@ -4252,7 +4199,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 8 i32.ne @@ -4314,6 +4261,8 @@ ) (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4337,18 +4286,15 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $4 i32.const 0 i32.store offset=4 - local.get $3 + local.get $4 i32.const 0 i32.store offset=8 local.get $0 @@ -4371,24 +4317,90 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 local.get $0 i32.store - local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $3 + if + local.get $4 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $5 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $4 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $5 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $4 local.get $0 local.get $1 i32.add i32.store offset=4 - local.get $3 + local.get $4 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) ) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index f3d2b4092c..0c7c84b277 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -233,7 +233,20 @@ (export "memory" (memory $0)) (export "_start" (func $~start)) (func $~lib/date/epochMillis (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i64) - (local $7 i32) + local.get $6 + i64.extend_i32_s + local.get $5 + i32.const 1000 + i32.mul + i64.extend_i32_s + local.get $4 + i32.const 60000 + i32.mul + i64.extend_i32_s + local.get $3 + i32.const 3600000 + i32.mul + i64.extend_i32_s local.get $0 local.get $1 i32.const 2 @@ -249,21 +262,7 @@ select i32.const 400 i32.div_s - local.set $7 - local.get $6 - i64.extend_i32_s - local.get $5 - i32.const 1000 - i32.mul - i64.extend_i32_s - local.get $4 - i32.const 60000 - i32.mul - i64.extend_i32_s - local.get $3 - i32.const 3600000 - i32.mul - i64.extend_i32_s + local.set $3 local.get $2 i32.const -3 i32.const 9 @@ -281,7 +280,7 @@ i32.div_u i32.add local.get $0 - local.get $7 + local.get $3 i32.const 400 i32.mul i32.sub @@ -297,7 +296,7 @@ i32.div_u i32.sub i32.add - local.get $7 + local.get $3 i32.const 146097 i32.mul i32.add @@ -318,47 +317,47 @@ local.get $0 i32.const 719468 i32.add - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 146096 i32.sub - local.get $0 + local.get $1 i32.const 0 i32.ge_s select i32.const 146097 i32.div_s - local.set $2 + local.set $0 + local.get $1 local.get $0 - local.get $2 i32.const 146097 i32.mul i32.sub - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1460 i32.div_u i32.sub - local.get $0 + local.get $1 i32.const 36524 i32.div_u i32.add - local.get $0 + local.get $1 i32.const 146096 i32.div_u i32.sub i32.const 365 i32.div_u - local.set $1 - local.get $0 + local.set $2 local.get $1 + local.get $2 i32.const 365 i32.mul - local.get $1 + local.get $2 i32.const 2 i32.shr_u i32.add - local.get $1 + local.get $2 i32.const 100 i32.div_u i32.sub @@ -370,9 +369,9 @@ i32.add i32.const 153 i32.div_s - local.set $0 + local.set $1 local.get $3 - local.get $0 + local.get $1 i32.const 153 i32.mul i32.const 2 @@ -385,20 +384,20 @@ global.set $~lib/date/_day i32.const 3 i32.const -9 - local.get $0 + local.get $1 i32.const 10 i32.lt_s select - local.get $0 + local.get $1 i32.add - local.tee $0 + local.tee $1 global.set $~lib/date/_month - local.get $2 + local.get $0 i32.const 400 i32.mul - local.get $1 + local.get $2 i32.add - local.get $0 + local.get $1 i32.const 2 i32.le_s i32.add @@ -407,19 +406,19 @@ (local $0 i32) (local $1 i32) i32.const 1392 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6448 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 6544 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1200 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2304 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -486,7 +485,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -509,7 +508,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -519,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -592,30 +591,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -652,11 +627,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -668,28 +642,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -701,19 +672,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -738,9 +709,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -748,17 +719,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -886,7 +857,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -897,7 +868,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -917,44 +888,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -964,7 +934,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -974,20 +944,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1015,7 +985,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1042,15 +1012,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1062,15 +1029,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1091,6 +1058,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1100,7 +1070,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1137,8 +1107,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1297,7 +1267,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1422,7 +1396,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1432,7 +1406,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1445,14 +1419,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1477,56 +1450,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 + i32.const 1 + i32.const 27 local.get $1 i32.clz i32.sub - local.tee $2 - i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 1 i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 + i32.const 7 i32.sub local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1674,14 +1644,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1691,17 +1661,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1717,22 +1687,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1743,11 +1713,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1842,10 +1812,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1853,7 +1819,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1864,54 +1833,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1919,16 +1884,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1937,7 +1902,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1945,9 +1910,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1958,11 +1923,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1973,12 +1938,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1991,89 +1956,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -2081,7 +2046,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2238,10 +2203,9 @@ call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i64) local.get $1 local.get $0 i32.load offset=8 @@ -2250,45 +2214,45 @@ return end local.get $0 + i64.const 86400000 + i64.const 0 + local.get $0 + i64.load offset=16 + i64.const 86400000 + i64.rem_s + local.tee $2 + i64.const 0 + i64.lt_s + select + local.get $2 + i64.add + local.get $0 i32.load local.get $0 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 2 i32.le_s i32.sub - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 399 i32.sub - local.get $2 + local.get $3 i32.const 0 i32.ge_s select i32.const 400 i32.div_s - local.set $4 - local.get $0 - local.get $0 - i64.load offset=16 - i64.const 86400000 - i64.rem_s - local.tee $5 - i64.const 86400000 - i64.const 0 - local.get $5 - i64.const 0 - i64.lt_s - select - i64.add + local.set $0 local.get $1 i32.const -3 i32.const 9 - local.get $3 + local.get $4 i32.const 2 i32.gt_s select - local.get $3 + local.get $4 i32.add i32.const 153 i32.mul @@ -2297,24 +2261,24 @@ i32.const 5 i32.div_u i32.add - local.get $2 - local.get $4 + local.get $3 + local.get $0 i32.const 400 i32.mul i32.sub - local.tee $0 + local.tee $1 i32.const 365 i32.mul - local.get $0 + local.get $1 i32.const 2 i32.shr_u i32.add - local.get $0 + local.get $1 i32.const 100 i32.div_u i32.sub i32.add - local.get $4 + local.get $0 i32.const 146097 i32.mul i32.add @@ -2327,9 +2291,9 @@ call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) - (local $4 i64) + (local $4 i32) local.get $1 local.get $0 i32.load offset=4 @@ -2338,47 +2302,47 @@ return end local.get $0 + local.get $0 i32.load local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $4 i32.const 2 i32.le_s i32.sub - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 399 i32.sub - local.get $1 + local.get $3 i32.const 0 i32.ge_s select i32.const 400 i32.div_s - local.set $3 - local.get $0 + local.set $1 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $4 - i64.const 86400000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add local.get $0 i32.load offset=8 i32.const -3 i32.const 9 - local.get $2 + local.get $4 i32.const 2 i32.gt_s select - local.get $2 + local.get $4 i32.add i32.const 153 i32.mul @@ -2387,8 +2351,8 @@ i32.const 5 i32.div_u i32.add - local.get $1 local.get $3 + local.get $1 i32.const 400 i32.mul i32.sub @@ -2404,7 +2368,7 @@ i32.div_u i32.sub i32.add - local.get $3 + local.get $1 i32.const 146097 i32.mul i32.add @@ -2417,9 +2381,9 @@ call $~lib/date/Date#setTime ) (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) - (local $4 i64) + (local $4 i32) local.get $1 local.get $0 i32.load @@ -2427,46 +2391,46 @@ if return end + local.get $0 local.get $1 local.get $0 i32.load offset=4 - local.tee $2 + local.tee $4 i32.const 2 i32.le_s i32.sub - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 399 i32.sub - local.get $1 + local.get $3 i32.const 0 i32.ge_s select i32.const 400 i32.div_s - local.set $3 - local.get $0 + local.set $1 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $4 - i64.const 86400000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add local.get $0 i32.load offset=8 i32.const -3 i32.const 9 - local.get $2 + local.get $4 i32.const 2 i32.gt_s select - local.get $2 + local.get $4 i32.add i32.const 153 i32.mul @@ -2475,8 +2439,8 @@ i32.const 5 i32.div_u i32.add - local.get $1 local.get $3 + local.get $1 i32.const 400 i32.mul i32.sub @@ -2492,7 +2456,7 @@ i32.div_u i32.sub i32.add - local.get $3 + local.get $1 i32.const 146097 i32.mul i32.add @@ -2509,25 +2473,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - 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 7564 - i32.lt_s - if - i32.const 23968 - i32.const 24016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 + block $__inlined_func$~lib/util/number/itoa32 (result i32) + 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 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.eqz if @@ -2536,9 +2500,9 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1872 - local.set $1 br $__inlined_func$~lib/util/number/itoa32 end + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 i32.sub @@ -2546,12 +2510,10 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $3 + local.tee $2 select local.tee $0 - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) @@ -2597,14 +2559,14 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store loop $while-continue|0 local.get $0 @@ -2614,20 +2576,20 @@ local.get $0 i32.const 10000 i32.rem_u - local.set $4 + local.set $3 local.get $0 i32.const 10000 i32.div_u local.set $0 - local.get $2 + local.get $1 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $4 + i32.add + local.get $3 i32.const 100 i32.div_u i32.const 2 @@ -2635,7 +2597,7 @@ i32.const 1884 i32.add i64.load32_u - local.get $4 + local.get $3 i32.const 100 i32.rem_u i32.const 2 @@ -2654,13 +2616,13 @@ i32.const 100 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 100 @@ -2680,12 +2642,12 @@ i32.const 10 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 2 @@ -2695,21 +2657,21 @@ i32.load i32.store else - local.get $2 + local.get $1 i32.const 1 i32.sub i32.const 1 i32.shl - local.get $1 + local.get $4 i32.add local.get $0 i32.const 48 i32.add i32.store16 end - local.get $3 + local.get $2 if - local.get $1 + local.get $4 i32.const 45 i32.store16 end @@ -2717,8 +2679,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2733,17 +2695,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2889,19 +2851,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2916,7 +2878,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2927,10 +2889,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2938,10 +2900,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2952,7 +2914,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2982,17 +2944,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -3007,7 +2969,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -3018,10 +2980,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3029,10 +2991,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3043,7 +3005,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3069,17 +3031,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3094,7 +3056,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3105,10 +3067,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3116,10 +3078,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3130,7 +3092,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3167,131 +3129,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -3308,59 +3248,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3377,7 +3311,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3388,11 +3322,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3406,17 +3340,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3625,25 +3559,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - 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 7564 - i32.lt_s - if - i32.const 23968 - i32.const 24016 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + block $__inlined_func$~lib/string/String#concat (result i32) + 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 7564 + i32.lt_s + if + i32.const 23968 + i32.const 24016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 20 i32.sub @@ -3652,7 +3586,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3661,9 +3595,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3671,31 +3605,30 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3456 - local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $2 ) (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -3711,12 +3644,11 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $3 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 local.get $1 @@ -3829,7 +3761,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz if i32.const 0 @@ -3841,7 +3773,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.eqz if i32.const -1 @@ -3854,25 +3786,25 @@ i32.gt_s select local.tee $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select local.set $2 - local.get $3 local.get $4 + local.get $3 i32.sub - local.set $3 + local.set $4 loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.le_s if local.get $0 local.get $2 local.get $1 - local.get $4 + local.get $3 call $~lib/util/string/compareImpl i32.eqz if @@ -3888,66 +3820,6 @@ end i32.const -1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1264 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -3958,21 +3830,23 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 + local.tee $2 i32.load offset=12 - local.tee $7 + local.tee $3 i32.const 1 i32.add - local.tee $8 - local.tee $3 - local.get $0 - i32.load offset=8 + local.tee $4 local.tee $5 + local.get $2 + i32.load offset=8 + local.tee $6 i32.const 2 i32.shr_u i32.gt_u if - local.get $3 + local.get $5 i32.const 268435455 i32.gt_u if @@ -3984,38 +3858,38 @@ unreachable end block $__inlined_func$~lib/rt/itcms/__renew (result i32) - local.get $5 + local.get $6 i32.const 1 i32.shl - local.tee $2 + local.tee $7 i32.const 1073741820 - local.get $2 + local.get $7 i32.const 1073741820 i32.lt_u select - local.tee $2 - local.get $3 + local.tee $7 + local.get $5 i32.const 8 - local.get $3 + local.get $5 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u + local.tee $5 + local.get $5 + local.get $7 + i32.lt_u select - local.tee $3 - local.tee $2 - local.get $0 + local.tee $7 + local.tee $8 + local.get $2 i32.load - local.tee $9 - local.tee $6 + local.tee $10 + local.tee $11 i32.const 20 i32.sub - local.tee $4 + local.tee $9 i32.load i32.const -4 i32.and @@ -4023,69 +3897,75 @@ i32.sub i32.le_u if - local.get $4 - local.get $2 + local.get $9 + local.get $8 i32.store offset=16 - local.get $6 + local.get $11 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $2 - local.get $4 + local.get $8 + local.get $9 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $10 - local.get $6 - local.get $2 - local.get $4 + local.tee $5 + local.get $11 + local.get $8 + local.get $9 i32.load offset=16 - local.tee $4 - local.get $2 - local.get $4 + local.tee $9 + local.get $8 + local.get $9 i32.lt_u select call $~lib/memory/memory.copy - local.get $10 + local.get $5 end - local.tee $2 - local.get $5 + local.tee $5 + local.get $6 i32.add - local.get $3 - local.get $5 + local.get $7 + local.get $6 i32.sub call $~lib/memory/memory.fill - local.get $2 - local.get $9 + local.get $5 + local.get $10 i32.ne if - local.get $0 local.get $2 + local.get $5 i32.store - local.get $0 local.get $2 + local.get $5 i32.store offset=4 - local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $2 + local.get $5 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end - local.get $0 - local.get $3 + local.get $2 + local.get $7 i32.store offset=8 end local.get $0 i32.load offset=4 - local.get $7 + local.get $3 i32.const 2 i32.shl i32.add local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $8 + local.get $4 i32.store offset=12 ) (func $~lib/util/string/strtol (param $0 i32) (result i32) @@ -4100,7 +3980,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -4108,27 +3988,27 @@ end local.get $0 i32.load16_u - local.set $1 + local.set $2 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $1 + local.get $2 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $2 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $1 + local.get $2 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $1 + local.get $2 i32.const -8192 i32.add i32.const 10 @@ -4137,31 +4017,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $2 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 65279 i32.eq br_if $case6|0 @@ -4178,29 +4058,28 @@ i32.add local.tee $0 i32.load16_u - local.set $1 - local.get $2 + local.set $2 + local.get $1 i32.const 1 i32.sub - local.set $2 + local.set $1 br $while-continue|0 end end i32.const 1 local.set $3 - i32.const 1 - local.get $1 + local.get $2 i32.const 43 i32.eq - local.get $1 + local.get $2 i32.const 45 i32.eq - select - if - local.get $2 + i32.or + if (result i32) + local.get $1 i32.const 1 i32.sub - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -4208,7 +4087,7 @@ end i32.const -1 i32.const 1 - local.get $1 + local.get $2 i32.const 45 i32.eq select @@ -4218,16 +4097,15 @@ i32.add local.tee $0 i32.load16_u - local.set $1 + else + local.get $2 end - local.get $2 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $1 i32.const 48 i32.eq - select + local.get $1 + i32.const 2 + i32.gt_s + i32.and if block $break|1 block $case2|1 @@ -4236,15 +4114,15 @@ i32.load16_u offset=2 i32.const 32 i32.or - local.tee $1 + local.tee $2 i32.const 98 i32.ne if - local.get $1 + local.get $2 i32.const 111 i32.eq br_if $case1|1 - local.get $1 + local.get $2 i32.const 120 i32.eq br_if $case2|1 @@ -4254,10 +4132,10 @@ i32.const 4 i32.add local.set $0 - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 i32.const 2 local.set $4 br $break|1 @@ -4266,10 +4144,10 @@ i32.const 4 i32.add local.set $0 - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 i32.const 8 local.set $4 br $break|1 @@ -4278,10 +4156,10 @@ i32.const 4 i32.add local.set $0 - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 i32.const 16 local.set $4 end @@ -4293,40 +4171,40 @@ local.set $4 loop $while-continue|2 block $while-break|2 - local.get $2 - local.tee $1 + local.get $1 + local.tee $2 i32.const 1 i32.sub - local.set $2 - local.get $1 + local.set $1 + local.get $2 if local.get $0 i32.load16_u - local.tee $1 + local.tee $2 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 48 i32.sub else - local.get $1 + local.get $2 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $1 + local.get $2 i32.const 55 i32.sub else - local.get $1 + local.get $2 i32.const 87 i32.sub - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.const 97 i32.sub i32.const 25 @@ -4334,7 +4212,7 @@ select end end - local.tee $1 + local.tee $2 local.get $4 i32.ge_u if @@ -4346,7 +4224,7 @@ end br $while-break|2 end - local.get $1 + local.get $2 local.get $4 local.get $5 i32.mul @@ -4368,104 +4246,99 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $invalid - block $~lib/array/Array + block $folding-inner0 + block $invalid block $~lib/array/Array<~lib/string/String> block $~lib/staticarray/StaticArray<~lib/string/String> block $~lib/date/Date - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid - end - return + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/date/Date $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $folding-inner0 $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end return end local.get $0 - local.tee $1 - local.get $0 i32.const 20 i32.sub i32.load offset=16 + local.get $0 i32.add - local.set $2 + local.set $1 loop $while-continue|0 + local.get $0 local.get $1 - local.get $2 i32.lt_u if - local.get $1 + local.get $0 i32.load - local.tee $0 + local.tee $2 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end return end local.get $0 - local.tee $1 i32.load offset=4 - local.tee $2 + local.tee $1 local.get $0 i32.load offset=12 i32.const 2 i32.shl i32.add local.set $3 - loop $while-continue|00 - local.get $2 + loop $while-continue|01 + local.get $1 local.get $3 i32.lt_u if - local.get $2 + local.get $1 i32.load - local.tee $0 + local.tee $2 if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 - br $while-continue|00 + local.set $1 + br $while-continue|01 end end - local.get $1 + local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start global.get $~started @@ -4478,9 +4351,10 @@ ) (func $~lib/date/Date#toISOString (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) - (local $4 i64) + (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 112 i32.sub @@ -4544,29 +4418,28 @@ local.tee $1 i32.const 0 i32.lt_s - local.set $2 - i32.const 1 + local.tee $3 local.get $1 i32.const 10000 i32.ge_s - local.get $2 - select + i32.or if global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $4 + local.get $4 i32.const 1616 i32.const 1648 - local.get $2 + local.get $3 select - local.tee $2 + local.tee $3 i32.store local.get $1 - local.get $1 i32.const 31 i32.shr_s - local.tee $1 - i32.add + local.tee $4 local.get $1 + local.get $4 + i32.add i32.xor call $~lib/number/I32#toString local.set $1 @@ -4584,7 +4457,6 @@ local.get $1 i32.store offset=4 local.get $3 - local.get $2 local.get $1 call $~lib/string/String.__concat local.tee $1 @@ -4619,22 +4491,22 @@ local.get $0 i32.load offset=4 call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=104 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=108 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=96 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4653,22 +4525,22 @@ local.get $0 i32.load offset=8 call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=84 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=92 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=80 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4684,39 +4556,39 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=60 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $4 - i64.const 86400000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 3600000 i32.div_s call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 - i32.store offset=68 + local.tee $4 local.get $3 + i32.store offset=68 + local.get $4 i32.const 1872 i32.store offset=76 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=64 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4732,39 +4604,39 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=44 + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s - local.tee $4 - i64.const 3600000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 60000 i32.div_s call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 - i32.store offset=52 + local.tee $4 local.get $3 + i32.store offset=52 + local.get $4 i32.const 1872 i32.store offset=60 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=48 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4780,39 +4652,39 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=28 + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s - local.tee $4 - i64.const 60000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 i32.const 1000 i32.div_s call $~lib/number/I32#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 - i32.store offset=36 + local.tee $4 local.get $3 + i32.store offset=36 + local.get $4 i32.const 1872 i32.store offset=44 - local.get $2 + local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=32 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -4828,26 +4700,26 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s - local.tee $4 - i64.const 1000 - i64.const 0 - local.get $4 + local.tee $2 i64.const 0 i64.lt_s select + local.get $2 i64.add i32.wrap_i64 call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store offset=12 - local.get $2 + local.get $3 i32.const 1872 i32.store offset=28 local.get $0 @@ -4917,74 +4789,73 @@ local.get $1 i32.const 0 i32.store offset=40 - local.get $1 i32.const 28 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.const 4560 i32.const 28 call $~lib/memory/memory.copy local.get $1 - local.tee $3 + local.get $6 i32.store global.get $~lib/memory/__stack_pointer i32.const 48 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.const 4992 i32.const 48 call $~lib/memory/memory.copy - local.get $1 + local.get $3 i32.store offset=4 local.get $0 i32.load - local.tee $4 + local.tee $2 local.get $0 i32.load offset=4 - local.tee $6 + local.tee $5 i32.const 3 i32.lt_s i32.sub - local.tee $2 + local.tee $1 i32.const 0 i32.ge_s - local.set $5 + local.set $7 local.get $0 i32.load offset=8 - local.tee $7 - local.get $6 + local.tee $4 + local.get $5 i32.const 1579 i32.add i32.load8_u - local.get $2 - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 3 i32.sub - local.get $5 + local.get $7 select i32.const 4 i32.div_s - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 99 i32.sub - local.get $5 + local.get $7 select i32.const 100 i32.div_s i32.sub - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 399 i32.sub - local.get $5 + local.get $7 select i32.const 400 i32.div_s i32.add + local.get $1 i32.add i32.add i32.add @@ -4998,38 +4869,38 @@ i32.lt_s select i32.add - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 31 i32.shr_s - local.tee $0 + local.tee $7 i32.add - local.get $0 + local.get $7 i32.xor call $~lib/number/I32#toString - local.set $0 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=12 - local.get $0 + local.get $7 i32.const 4 call $~lib/string/String#padStart local.tee $0 i32.store offset=16 - local.get $4 + local.get $2 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 1616 i32.store offset=8 - local.get $4 + local.get $2 i32.const 1616 local.get $0 call $~lib/string/String.__concat @@ -5037,34 +4908,34 @@ i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $2 + local.tee $2 + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $6 i32.add i32.load - local.tee $2 + local.tee $1 i32.store offset=32 - local.get $4 - local.get $6 + local.get $2 + local.get $5 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $1 + local.get $3 i32.add i32.load - local.tee $1 + local.tee $2 i32.store offset=36 - local.get $2 local.get $1 + local.get $2 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=24 - local.get $7 + local.get $4 call $~lib/number/I32#toString local.set $2 global.get $~lib/memory/__stack_pointer @@ -5106,9 +4977,9 @@ global.set $~lib/memory/__stack_pointer ) (func $~lib/date/Date#toTimeString (param $0 i32) (result i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 40 @@ -5126,73 +4997,73 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i64.const 0 i64.store offset=16 - local.get $1 + local.get $2 i64.const 0 i64.store offset=24 - local.get $1 + local.get $2 i64.const 0 i64.store offset=32 + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $3 - i64.const 86400000 - i64.const 0 - local.get $3 + local.tee $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 i32.div_s call $~lib/number/I32#toString - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store offset=32 + local.tee $3 local.get $2 + i32.store offset=32 + local.get $3 i32.const 1872 i32.store offset=36 - local.get $1 + local.get $2 i32.const 2 call $~lib/string/String#padStart - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 3520 i32.store offset=28 - local.get $1 + local.get $2 i32.const 3520 call $~lib/string/String.__concat - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=16 + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s - local.tee $3 - i64.const 3600000 - i64.const 0 - local.get $3 + local.tee $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -5213,34 +5084,34 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=20 - local.get $1 + local.get $3 local.get $2 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 3520 i32.store offset=12 - local.get $1 + local.get $2 i32.const 3520 call $~lib/string/String.__concat - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s - local.tee $3 - i64.const 60000 - i64.const 0 - local.get $3 + local.tee $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -5248,10 +5119,10 @@ call $~lib/number/I32#toString local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 1872 i32.store offset=16 local.get $0 @@ -5261,7 +5132,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $1 + local.get $2 local.get $0 call $~lib/string/String.__concat global.get $~lib/memory/__stack_pointer @@ -5271,10 +5142,10 @@ ) (func $~lib/date/Date#toUTCString (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -5345,112 +5216,112 @@ i32.const 48 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.const 6048 i32.const 48 call $~lib/memory/memory.copy - local.get $1 + local.get $4 i32.store offset=4 local.get $0 i32.load - local.tee $6 + local.tee $5 local.get $0 i32.load offset=4 - local.tee $7 + local.tee $6 i32.const 3 i32.lt_s i32.sub - local.tee $4 + local.tee $1 i32.const 0 i32.ge_s - local.set $2 + local.set $7 local.get $0 i32.load offset=8 local.tee $8 - local.get $7 + local.get $6 i32.const 1579 i32.add i32.load8_u - local.get $4 - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 3 i32.sub - local.get $2 + local.get $7 select i32.const 4 i32.div_s - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 99 i32.sub - local.get $2 + local.get $7 select i32.const 100 i32.div_s i32.sub - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 399 i32.sub - local.get $2 + local.get $7 select i32.const 400 i32.div_s i32.add + local.get $1 i32.add i32.add i32.add i32.const 7 i32.rem_s - local.tee $2 + local.tee $1 i32.const 7 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.lt_s select i32.add - local.set $9 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 - local.get $6 + local.get $5 + local.get $5 i32.const 31 i32.shr_s - local.tee $2 + local.tee $9 i32.add - local.get $2 + local.get $9 i32.xor call $~lib/number/I32#toString - local.set $2 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=12 - local.get $2 + local.get $9 i32.const 4 call $~lib/string/String#padStart - local.tee $4 + local.tee $1 i32.store offset=16 - local.get $6 + local.get $5 i32.const 0 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i32.const 1616 i32.store offset=8 - local.get $2 + local.get $5 i32.const 1616 - local.get $4 + local.get $1 call $~lib/string/String.__concat - local.tee $4 + local.tee $1 i32.store offset=16 end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $7 i32.const 2 i32.shl local.get $3 @@ -5460,47 +5331,47 @@ i32.store offset=80 local.get $8 call $~lib/number/I32#toString - local.set $2 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.store offset=88 global.get $~lib/memory/__stack_pointer i32.const 1872 i32.store offset=92 - local.get $2 + local.get $5 i32.const 2 call $~lib/string/String#padStart - local.set $2 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.store offset=84 local.get $3 - local.get $2 + local.get $5 call $~lib/string/String.__concat local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=72 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.const 1 i32.sub i32.const 2 i32.shl - local.get $1 + local.get $4 i32.add i32.load - local.tee $1 + local.tee $4 i32.store offset=76 local.get $3 - local.get $1 + local.get $4 call $~lib/string/String.__concat - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=68 + local.get $3 local.get $1 - local.get $4 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5512,18 +5383,18 @@ local.get $1 i32.const 5072 call $~lib/string/String.__concat - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=52 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s - local.tee $5 + local.tee $2 i64.const 86400000 i64.const 0 - local.get $5 + local.get $2 i64.const 0 i64.lt_s select @@ -5534,21 +5405,21 @@ call $~lib/number/I32#toString local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 local.get $3 i32.store offset=60 - local.get $1 + local.get $4 i32.const 1872 i32.store offset=68 local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=56 - local.get $2 local.get $1 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5560,18 +5431,18 @@ local.get $1 i32.const 3520 call $~lib/string/String.__concat - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=36 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s - local.tee $5 + local.tee $2 i64.const 3600000 i64.const 0 - local.get $5 + local.get $2 i64.const 0 i64.lt_s select @@ -5582,21 +5453,21 @@ call $~lib/number/I32#toString local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $4 local.get $3 i32.store offset=44 - local.get $1 + local.get $4 i32.const 1872 i32.store offset=52 local.get $3 i32.const 2 call $~lib/string/String#padStart - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=40 - local.get $2 local.get $1 + local.get $3 call $~lib/string/String.__concat local.set $1 global.get $~lib/memory/__stack_pointer @@ -5608,18 +5479,18 @@ local.get $1 i32.const 3520 call $~lib/string/String.__concat - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=12 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s - local.tee $5 + local.tee $2 i64.const 60000 i64.const 0 - local.get $5 + local.get $2 i64.const 0 i64.lt_s select @@ -5628,22 +5499,22 @@ i32.const 1000 i32.div_s call $~lib/number/I32#toString - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store offset=28 + local.tee $3 local.get $0 + i32.store offset=28 + local.get $3 i32.const 1872 i32.store offset=36 - local.get $1 + local.get $0 i32.const 2 call $~lib/string/String#padStart local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=24 - local.get $3 + local.get $1 local.get $0 call $~lib/string/String.__concat local.set $0 @@ -5686,13 +5557,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i64.const 0 i64.store - local.get $2 + local.get $5 i64.const 0 i64.store offset=8 - local.get $2 + local.get $5 i64.const 0 i64.store offset=16 block $folding-inner2 @@ -5714,10 +5585,13 @@ i32.load offset=4 local.get $0 i32.store - local.get $1 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end br $folding-inner0 end local.get $0 @@ -5726,16 +5600,16 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $2 + local.set $8 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $7 + local.tee $5 if - local.get $2 + local.get $8 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -5750,7 +5624,7 @@ br $folding-inner1 end else - local.get $2 + local.get $8 i32.eqz if i32.const 0 @@ -5759,9 +5633,9 @@ br $folding-inner1 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $8 i32.const 2147483647 - local.get $2 + local.get $8 i32.const 2147483647 i32.ne select @@ -5771,7 +5645,7 @@ i32.store local.get $1 i32.load offset=4 - local.set $5 + local.set $4 loop $for-loop|0 local.get $2 local.get $3 @@ -5781,9 +5655,9 @@ i32.const 2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store offset=8 - local.get $4 + local.get $5 local.get $3 i32.const 1 i32.shl @@ -5794,14 +5668,17 @@ local.get $3 i32.const 2 i32.shl - local.get $5 - i32.add local.get $4 + i32.add + local.get $5 i32.store - local.get $1 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $1 + local.get $5 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 i32.const 1 i32.add @@ -5819,38 +5696,38 @@ loop $while-continue|1 local.get $0 local.get $1 - local.get $4 + local.get $2 call $~lib/string/String#indexOf - local.tee $5 + local.tee $6 i32.const -1 i32.xor if - local.get $5 - local.get $4 + local.get $6 + local.get $2 i32.sub - local.tee $6 + local.tee $7 i32.const 0 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 1 i32.shl - local.tee $8 + local.tee $9 i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store offset=16 - local.get $6 - local.get $4 + local.get $7 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $8 + local.get $9 call $~lib/memory/memory.copy local.get $3 - local.get $6 + local.get $7 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer @@ -5860,21 +5737,21 @@ i32.const 3456 call $~lib/array/Array<~lib/string/String>#push end - local.get $9 + local.get $4 i32.const 1 i32.add - local.tee $9 + local.tee $4 i32.const 2147483647 i32.eq br_if $folding-inner2 local.get $5 - local.get $7 + local.get $6 i32.add - local.set $4 + local.set $2 br $while-continue|1 end end - local.get $4 + local.get $2 i32.eqz if local.get $3 @@ -5882,8 +5759,8 @@ call $~lib/array/Array<~lib/string/String>#push br $folding-inner2 end + local.get $8 local.get $2 - local.get $4 i32.sub local.tee $1 i32.const 0 @@ -5893,21 +5770,21 @@ local.get $1 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store offset=4 - local.get $1 local.get $4 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.get $2 + local.get $1 call $~lib/memory/memory.copy local.get $3 - local.get $1 + local.get $4 call $~lib/array/Array<~lib/string/String>#push else global.get $~lib/memory/__stack_pointer @@ -5952,7 +5829,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 28 i32.sub @@ -6005,20 +5881,20 @@ i32.const 3488 i32.const 0 call $~lib/string/String#indexOf - local.tee $2 + local.tee $6 i32.const -1 i32.xor if global.get $~lib/memory/__stack_pointer local.get $0 i32.const 0 - local.get $2 + local.get $6 call $~lib/string/String#substring local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + local.get $6 i32.const 1 i32.add i32.const 2147483647 @@ -6036,7 +5912,7 @@ i32.store offset=12 local.get $0 i32.load offset=12 - local.tee $4 + local.tee $6 i32.const 1 i32.le_s if @@ -6050,24 +5926,24 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=16 - local.get $2 + local.get $3 call $~lib/util/string/strtol - local.set $5 + local.set $3 local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $2 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store offset=16 - local.get $2 - call $~lib/util/string/strtol - local.set $6 local.get $4 + call $~lib/util/string/strtol + local.set $4 + local.get $6 i32.const 3 i32.ge_s if @@ -6084,23 +5960,23 @@ i32.const 3552 i32.const 0 call $~lib/string/String#indexOf - local.tee $2 + local.tee $6 i32.const -1 i32.xor if local.get $0 i32.const 0 - local.get $2 + local.get $6 call $~lib/string/String#substring - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=16 - local.get $3 + local.get $2 call $~lib/util/string/strtol - local.set $3 + local.set $2 local.get $0 - local.get $2 + local.get $6 i32.const 1 i32.add i32.const 2147483647 @@ -6111,11 +5987,11 @@ i32.store offset=16 local.get $0 call $~lib/util/string/strtol - local.set $7 + local.set $5 else local.get $0 call $~lib/util/string/strtol - local.set $3 + local.set $2 end end end @@ -6127,40 +6003,40 @@ local.get $1 i32.const 1616 call $~lib/string/String#split - local.tee $2 + local.tee $0 i32.store offset=24 - local.get $2 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/util/string/strtol i32.const 1 local.set $1 - local.get $2 + local.get $0 i32.load offset=12 - local.tee $8 + local.tee $7 i32.const 2 i32.ge_s if (result i32) - local.get $2 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $0 + local.get $1 call $~lib/util/string/strtol local.set $1 - local.get $8 + local.get $7 i32.const 3 i32.ge_s if (result i32) - local.get $2 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get local.set $0 @@ -6178,10 +6054,10 @@ local.set $0 local.get $1 local.get $0 - local.get $5 - local.get $6 local.get $3 - local.get $7 + local.get $4 + local.get $2 + local.get $5 call $~lib/date/epochMillis call $~lib/date/Date#constructor global.get $~lib/memory/__stack_pointer @@ -6194,7 +6070,6 @@ (local $1 i64) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 36 i32.sub @@ -6521,17 +6396,17 @@ call $~lib/builtins/abort unreachable end + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -6546,17 +6421,17 @@ call $~lib/builtins/abort unreachable end + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -6571,17 +6446,17 @@ call $~lib/builtins/abort unreachable end + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -6596,17 +6471,17 @@ call $~lib/builtins/abort unreachable end + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 706 @@ -6660,17 +6535,17 @@ call $~lib/builtins/abort unreachable end + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -6685,17 +6560,17 @@ call $~lib/builtins/abort unreachable end + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -6710,17 +6585,17 @@ call $~lib/builtins/abort unreachable end + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -6735,17 +6610,17 @@ call $~lib/builtins/abort unreachable end + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 274 @@ -6763,17 +6638,17 @@ call $~lib/date/Date#constructor local.tee $0 i32.store + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 984 @@ -6789,17 +6664,17 @@ local.get $0 i32.const 12 call $~lib/date/Date#setUTCMilliseconds + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 12 @@ -6815,17 +6690,17 @@ local.get $0 i32.const 568 call $~lib/date/Date#setUTCMilliseconds + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 568 @@ -6871,17 +6746,17 @@ local.get $0 i32.const 2000 call $~lib/date/Date#setUTCMilliseconds + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 if @@ -6907,17 +6782,17 @@ local.get $0 i32.const -2000 call $~lib/date/Date#setUTCMilliseconds + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 if @@ -6945,17 +6820,17 @@ call $~lib/date/Date#constructor local.tee $0 i32.store + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -6973,17 +6848,17 @@ local.get $0 i32.const 12 call $~lib/date/Date#setUTCSeconds + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -7001,17 +6876,17 @@ local.get $0 i32.const 50 call $~lib/date/Date#setUTCSeconds + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -7061,17 +6936,17 @@ call $~lib/date/Date#constructor local.tee $0 i32.store + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -7089,17 +6964,17 @@ local.get $0 i32.const 12 call $~lib/date/Date#setUTCMinutes + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -7117,17 +6992,17 @@ local.get $0 i32.const 50 call $~lib/date/Date#setUTCMinutes + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -7177,17 +7052,17 @@ call $~lib/date/Date#constructor local.tee $0 i32.store + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -7205,17 +7080,17 @@ local.get $0 i32.const 12 call $~lib/date/Date#setUTCHours + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -7233,17 +7108,17 @@ local.get $0 i32.const 2 call $~lib/date/Date#setUTCHours + i64.const 86400000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -7398,17 +7273,17 @@ call $~lib/builtins/abort unreachable end + i64.const 3600000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -7423,17 +7298,17 @@ call $~lib/builtins/abort unreachable end + i64.const 60000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -7448,17 +7323,17 @@ call $~lib/builtins/abort unreachable end + i64.const 1000 + i64.const 0 local.get $0 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 274 @@ -7609,65 +7484,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1467763200000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 3 i32.ne @@ -7682,65 +7557,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1467763199999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=8 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 2 i32.ne @@ -7755,65 +7630,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1467849599999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=12 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 3 i32.ne @@ -7828,65 +7703,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1467849600000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=16 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 4 i32.ne @@ -7901,65 +7776,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1468022400000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=20 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 6 i32.ne @@ -7974,65 +7849,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1468022399999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=24 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 5 i32.ne @@ -8047,65 +7922,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1468108799999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 - i32.const 399 - i32.sub local.get $3 + local.get $3 + i32.const 399 + i32.sub + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add i32.const 6 i32.ne @@ -8120,65 +7995,65 @@ global.get $~lib/memory/__stack_pointer i64.const 1468108800000 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=4 - local.get $2 + local.get $0 i32.load - local.get $2 + local.get $0 i32.load offset=4 - local.tee $4 + local.tee $2 i32.const 3 i32.lt_s i32.sub - local.tee $0 - i32.const 0 - i32.ge_s local.set $3 - local.get $2 + i32.const 7 + i32.const 0 + local.get $0 i32.load offset=8 - local.get $4 + local.get $2 i32.const 1579 i32.add i32.load8_u - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 3 i32.sub local.get $3 + i32.const 0 + i32.ge_s + local.tee $0 select i32.const 4 i32.div_s - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 99 i32.sub - local.get $3 + local.get $0 select i32.const 100 i32.div_s i32.sub - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 399 i32.sub - local.get $3 + local.get $0 select i32.const 400 i32.div_s i32.add + local.get $3 i32.add i32.add i32.add i32.const 7 i32.rem_s local.tee $0 - i32.const 7 - i32.const 0 - local.get $0 i32.const 0 i32.lt_s select + local.get $0 i32.add if i32.const 0 @@ -9225,14 +9100,14 @@ global.get $~lib/memory/__stack_pointer i64.const 8639999999999999 call $~lib/date/Date#constructor - local.tee $2 + local.tee $0 i32.store offset=16 global.get $~lib/memory/__stack_pointer i64.const -8639999999999999 call $~lib/date/Date#constructor - local.tee $0 + local.tee $2 i32.store offset=12 - local.get $0 + local.get $2 i32.load i32.const -271821 i32.ne @@ -9244,7 +9119,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load offset=4 i32.const 4 i32.ne @@ -9256,7 +9131,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load offset=8 i32.const 20 i32.ne @@ -9268,17 +9143,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 86400000 + i64.const 0 + local.get $2 i64.load offset=16 i64.const 86400000 i64.rem_s local.tee $1 - i64.const 86400000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 3600000 @@ -9291,17 +9166,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 3600000 + i64.const 0 + local.get $2 i64.load offset=16 i64.const 3600000 i64.rem_s local.tee $1 - i64.const 3600000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 60000 @@ -9314,17 +9189,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 60000 + i64.const 0 + local.get $2 i64.load offset=16 i64.const 60000 i64.rem_s local.tee $1 - i64.const 60000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1000 @@ -9337,17 +9212,17 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i64.const 1000 + i64.const 0 + local.get $2 i64.load offset=16 i64.const 1000 i64.rem_s local.tee $1 - i64.const 1000 - i64.const 0 - local.get $1 i64.const 0 i64.lt_s select + local.get $1 i64.add i32.wrap_i64 i32.const 1 @@ -9360,17 +9235,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 call $~lib/date/Date#toISOString - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer local.tee $3 - local.get $2 + local.get $0 i32.store offset=28 local.get $3 i32.const 7360 i32.store offset=32 - local.get $2 + local.get $0 i32.const 7360 call $~lib/string/String.__eq i32.eqz @@ -9382,7 +9257,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 call $~lib/date/Date#toISOString local.set $0 global.get $~lib/memory/__stack_pointer @@ -9522,7 +9397,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 i32.const 1868 i32.load i32.const 1 @@ -9530,6 +9404,7 @@ i32.const 1 i32.shl local.tee $2 + i32.eqz local.get $0 i32.const 20 i32.sub @@ -9538,14 +9413,13 @@ i32.shr_u i32.const 1 i32.shl - local.tee $6 + local.tee $4 local.get $1 i32.const 1 i32.shl local.tee $1 i32.gt_u - select - i32.eqz + i32.or if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9558,28 +9432,32 @@ local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $5 i32.store local.get $2 local.get $1 - local.get $6 + local.get $4 i32.sub - local.tee $4 + local.tee $1 i32.lt_u if local.get $2 - local.get $4 + local.get $1 i32.const 2 i32.sub local.get $2 i32.div_u + local.tee $6 i32.mul - local.tee $1 local.set $7 + local.get $2 + local.get $6 + i32.mul + local.set $6 loop $while-continue|0 - local.get $1 - local.get $5 - i32.gt_u + local.get $3 + local.get $6 + i32.lt_u if local.get $3 local.get $5 @@ -9588,37 +9466,37 @@ local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $5 + local.get $3 i32.add - local.set $5 + local.set $3 br $while-continue|0 end end - local.get $3 + local.get $5 local.get $7 i32.add i32.const 1872 - local.get $4 + local.get $1 local.get $7 i32.sub call $~lib/memory/memory.copy else - local.get $3 + local.get $5 i32.const 1872 - local.get $4 + local.get $1 call $~lib/memory/memory.copy end - local.get $3 - local.get $4 + local.get $1 + local.get $5 i32.add local.get $0 - local.get $6 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $5 ) (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -9688,10 +9566,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $4 i32.sub - local.tee $2 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -9705,7 +9583,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -9718,7 +9596,7 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 @@ -9727,7 +9605,7 @@ local.get $0 local.get $4 i32.add - local.get $2 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9762,35 +9640,38 @@ local.get $0 i32.const 2 i32.shl - local.tee $3 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 - local.get $2 + local.tee $2 + local.get $3 i32.store - local.get $1 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + if + local.get $2 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 + local.get $3 i32.store offset=4 + local.get $2 local.get $1 - local.get $3 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -9849,4 +9730,77 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1264 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index ab4c2824a1..8125ecd31f 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -5396,14 +5396,17 @@ i32.or i32.const 160 i32.eq - local.get $0 - i32.const 9 - i32.sub - i32.const 13 - i32.const 9 - i32.sub - i32.le_u - i32.or + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 9 + i32.sub + i32.const 13 + i32.const 9 + i32.sub + i32.le_u + end return end local.get $0 diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 1123142e58..3c1f5f2528 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -60,13 +60,13 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1616 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -133,7 +133,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -156,7 +156,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -166,15 +166,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -239,30 +239,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -299,11 +275,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -315,28 +290,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -348,19 +320,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -385,9 +357,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -395,17 +367,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -533,7 +505,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -544,7 +516,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -564,44 +536,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -611,7 +582,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -621,20 +592,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -662,7 +633,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -689,15 +660,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -709,15 +677,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -738,6 +706,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -747,7 +718,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -784,8 +755,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -944,7 +915,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1069,7 +1044,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1079,7 +1054,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1092,14 +1067,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1124,56 +1098,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1321,14 +1292,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1338,17 +1309,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1364,22 +1335,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1390,11 +1361,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1489,10 +1460,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1500,7 +1467,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1511,54 +1481,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1566,16 +1532,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1584,7 +1550,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1592,9 +1558,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1605,11 +1571,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1620,12 +1586,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1638,89 +1604,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1728,7 +1694,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1736,61 +1702,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1826,7 +1737,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -1834,7 +1745,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1842,33 +1753,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load8_s local.tee $8 i32.store8 local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 @@ -1883,29 +1794,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -1918,30 +1829,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -1954,76 +1871,77 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $2 - i32.const -2 + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + drop + local.get $2 + i32.const -2 i32.and local.set $0 br $while-continue|0 end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -2049,17 +1967,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2205,19 +2123,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2232,7 +2150,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2243,10 +2161,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2254,10 +2172,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2268,7 +2186,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2298,17 +2216,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2323,7 +2241,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2334,10 +2252,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2345,10 +2263,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2359,7 +2277,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2385,17 +2303,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2410,7 +2328,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2421,10 +2339,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2432,10 +2350,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2446,7 +2364,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2483,131 +2401,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2624,59 +2520,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2693,7 +2583,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2704,11 +2594,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2722,17 +2612,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2746,312 +2636,313 @@ i32.store8 end ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) local.get $0 - i32.load offset=8 - local.tee $8 - local.get $2 - i32.shr_u + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub local.get $1 - i32.lt_u + i32.ge_u if - i32.const 1073741820 local.get $2 - i32.shr_u local.get $1 - i32.lt_u + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $1 + local.get $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u if - i32.const 1456 - i32.const 1728 - i32.const 18 - i32.const 48 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 end local.get $0 - i32.load - local.set $4 - local.get $1 - i32.const 8 local.get $1 - i32.const 8 i32.gt_u - select - local.get $2 - i32.shl - local.set $1 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) - local.get $3 - if (result i32) - local.get $8 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - else - local.get $1 - end - local.tee $6 - local.get $4 - local.tee $2 - i32.const 20 - i32.sub - local.tee $1 - i32.load - i32.const -4 + if + local.get $0 + i32.const 7 i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $1 - local.get $6 - i32.store offset=16 - local.get $2 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $6 - local.get $1 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $9 - local.set $3 - local.get $6 local.get $1 - i32.load offset=16 - local.tee $1 - local.get $1 - local.get $6 - i32.gt_u - select - local.set $7 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $2 - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $3 - i32.sub - local.get $7 - i32.sub - i32.const 0 - local.get $7 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $3 - local.get $1 - local.get $7 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $3 - i32.gt_u - if + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 local.get $1 i32.const 7 i32.and - local.get $3 - i32.const 7 - i32.and - i32.eq if - loop $while-continue|0 - local.get $3 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $1 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 end - loop $while-continue|2 - local.get $7 - if - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 end - else + end + end + loop $while-continue|2 + local.get $5 + if local.get $1 - i32.const 7 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $3 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $1 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end - loop $while-continue|5 - local.get $7 - if - local.get $3 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 end end end - local.get $9 + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end - local.tee $1 - local.get $8 + end + local.get $4 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=8 + local.tee $4 + local.get $2 + i32.shr_u + local.get $1 + i32.lt_u + if + i32.const 1073741820 + local.get $2 + i32.shr_u + local.get $1 + i32.lt_u + if + i32.const 1456 + i32.const 1728 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + local.get $2 + i32.shl + local.set $1 + local.get $0 + i32.load + local.tee $2 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $3 + i32.const 1073741820 + local.get $3 + i32.const 1073741820 + i32.lt_u + select + local.tee $3 + local.get $1 + local.get $1 + local.get $3 + i32.lt_u + select + local.set $1 + end + local.get $1 + call $~lib/rt/itcms/__renew + local.tee $3 + local.get $4 i32.add - local.get $6 - local.get $8 + local.get $1 + local.get $4 i32.sub call $~lib/memory/memory.fill - local.get $1 local.get $2 + local.get $3 i32.ne if local.get $0 - local.get $1 + local.get $3 i32.store local.get $0 - local.get $1 + local.get $3 i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $0 - local.get $6 + local.get $1 i32.store offset=8 end ) @@ -3187,7 +3078,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -3195,7 +3086,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -3203,33 +3094,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load local.tee $8 i32.store local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 @@ -3243,29 +3134,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -3278,30 +3169,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -3315,50 +3212,51 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -3375,6 +3273,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -3383,9 +3282,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -3406,14 +3304,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -3433,7 +3331,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -3444,9 +3342,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -3455,9 +3356,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -3486,89 +3390,96 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i64.const 0 i64.store - local.get $4 + local.get $5 i64.const 0 i64.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.store offset=16 - local.get $4 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store - local.get $5 + local.get $3 i32.const 24 i32.const 3 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 3 i32.store offset=4 - local.get $5 + local.get $3 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.store offset=12 - local.get $5 + local.get $3 i32.const 0 i32.store offset=16 - local.get $5 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 local.get $5 + local.get $3 i32.store loop $for-loop|1 - local.get $2 + local.get $4 i32.extend8_s i32.const 100 i32.lt_s if - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $2 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -3578,62 +3489,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 if i32.const 0 i32.const 1568 @@ -3642,19 +3553,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 - local.get $2 + local.get $3 + local.get $4 + local.get $4 i32.extend8_s - local.tee $4 + local.tee $5 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761394 @@ -3663,62 +3574,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -3728,10 +3639,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend8_s i32.const 10 i32.add @@ -3744,14 +3655,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|1 end end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -3764,18 +3675,18 @@ unreachable end i32.const 0 - local.set $2 + local.set $4 loop $for-loop|3 - local.get $2 + local.get $4 i32.extend8_s i32.const 100 i32.lt_s if - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $2 + local.get $4 i32.extend8_s i32.const -1028477379 i32.mul @@ -3785,62 +3696,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -3850,10 +3761,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend8_s i32.const 10 i32.add @@ -3866,19 +3777,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 - local.get $2 + local.get $3 + local.get $4 + local.get $4 i32.extend8_s - local.tee $4 + local.tee $5 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761394 @@ -3887,62 +3798,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -3952,10 +3863,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend8_s i32.const 20 i32.add @@ -3968,14 +3879,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|3 end end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -3988,60 +3899,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $3 + local.tee $4 i32.load offset=8 - local.set $11 - local.get $5 - i32.load offset=16 - local.tee $12 - local.set $4 + local.set $7 local.get $3 + i32.load offset=16 + local.tee $8 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $3 i32.const 0 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $9 i32.const 1073741820 i32.gt_u if @@ -4053,61 +3962,64 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $9 i32.const 8 - local.get $4 + local.get $9 i32.const 8 i32.gt_u select - local.tee $8 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $11 i32.store offset=4 - local.get $0 - local.get $8 + local.get $11 + local.get $10 call $~lib/memory/memory.fill - local.get $2 - local.get $0 + local.get $3 + local.get $11 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 + local.get $11 + if + local.get $3 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $11 i32.store offset=4 - local.get $2 - local.get $8 + local.get $3 + local.get $10 i32.store offset=8 - local.get $2 - local.get $4 + local.get $3 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 local.get $3 - local.get $2 i32.store loop $for-loop|0 - local.get $7 - local.get $12 + local.get $2 + local.get $8 i32.lt_s if - local.get $7 + local.get $2 i32.const 12 i32.mul - local.get $11 + local.get $7 i32.add - local.tee $4 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $3 local.get $1 - local.get $4 + local.get $6 i32.load8_s call $~lib/array/Array#__set local.get $1 @@ -4115,30 +4027,29 @@ i32.add local.set $1 end - local.get $7 + local.get $2 i32.const 1 i32.add - local.set $7 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $3 local.get $1 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 + local.get $3 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.tee $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 call $~lib/map/Map#values local.tee $13 i32.store offset=8 @@ -4150,65 +4061,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.const 6 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $4 + local.get $14 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $4 + local.get $14 i32.const 0 i32.store offset=16 - local.get $4 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|4 - local.get $1 + local.get $3 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $1 + local.get $0 + local.tee $1 + local.get $3 i32.load offset=12 - local.get $6 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -4217,21 +4135,22 @@ call $~lib/builtins/abort unreachable end - local.get $6 local.get $1 + local.get $3 i32.load offset=4 i32.add i32.load8_s - local.set $2 + local.set $5 local.get $13 - local.get $6 + local.get $1 call $~lib/array/Array#__get - local.set $12 - local.get $5 + local.set $16 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 + local.tee $6 i32.extend8_s i32.const -1028477379 i32.mul @@ -4242,23 +4161,23 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 @@ -4266,13 +4185,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 + block $__inlined_func$~lib/map/Map#find12 + loop $while-continue|013 local.get $0 if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) @@ -4280,17 +4199,17 @@ else local.get $0 i32.load8_u - local.get $2 + local.get $6 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 + br_if $__inlined_func$~lib/map/Map#find12 + local.get $2 i32.const -2 i32.and local.set $0 - br $while-continue|011 + br $while-continue|013 end end i32.const 0 @@ -4306,14 +4225,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $12 + local.get $16 i32.const 20 i32.sub - local.tee $3 + local.tee $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -4324,23 +4243,23 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 @@ -4348,13 +4267,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 local.get $0 if local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 i32.const 1 i32.and if (result i32) @@ -4362,17 +4281,17 @@ else local.get $0 i32.load8_u - local.get $3 + local.get $2 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|014 + br $while-continue|016 end end i32.const 0 @@ -4395,14 +4314,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $14 i32.load - local.get $2 - local.tee $0 + local.get $5 i32.extend8_s i32.const -1028477379 i32.mul @@ -4412,79 +4330,80 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $7 i32.xor i32.const -2048144777 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $7 i32.xor i32.const -1028477379 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $7 i32.xor - local.tee $14 - local.get $4 + local.tee $8 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $7 + loop $while-continue|017 + local.get $2 if - local.get $7 + local.get $2 + local.tee $0 i32.load offset=4 - local.tee $8 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $7 - i32.load8_u local.get $0 + i32.load8_u + local.get $6 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $8 + local.get $2 i32.const -2 i32.and - local.set $7 - br $while-continue|015 + local.set $2 + br $while-continue|017 end end i32.const 0 - local.set $7 + local.set $0 end - local.get $7 + local.get $0 if - local.get $7 - local.get $2 + local.get $0 + local.get $6 i32.store8 offset=1 else - local.get $4 + local.get $14 i32.load offset=16 - local.get $4 + local.get $14 i32.load offset=12 i32.eq if - local.get $4 + local.get $14 i32.load offset=20 - local.get $4 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -4492,17 +4411,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $14 i32.load offset=4 else - local.get $4 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -4510,20 +4429,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $7 + local.get $10 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $11 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -4531,45 +4450,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $9 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $4 + local.get $14 i32.load offset=8 - local.tee $8 - local.get $4 + local.tee $7 + local.get $14 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $16 - local.get $3 + local.set $12 + local.get $2 local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 + loop $while-continue|018 + local.get $7 + local.get $12 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $8 + local.get $7 i32.load8_s - local.tee $9 + local.tee $17 i32.store8 local.get $0 - local.get $8 + local.get $7 i32.load8_s offset=1 i32.store8 offset=1 local.get $0 - local.get $9 + local.get $17 i32.extend8_s i32.const -1028477379 i32.mul @@ -4579,35 +4498,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $7 + local.get $10 i32.and i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=4 - local.get $9 + local.get $17 local.get $0 i32.store local.get $0 @@ -4615,33 +4534,39 @@ i32.add local.set $0 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 - br $while-continue|016 + local.set $7 + br $while-continue|018 end end - local.get $4 - local.get $10 + local.get $14 + local.get $11 i32.store - local.get $4 + local.get $11 + if + local.get $14 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 i32.store offset=4 - local.get $4 - local.get $3 + local.get $14 + local.get $2 i32.store offset=8 - local.get $4 - local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $9 i32.store offset=12 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -4650,40 +4575,40 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=8 local.tee $0 i32.store - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $7 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $7 + local.get $2 i32.const 3 i32.shl local.get $0 i32.add local.tee $0 - local.get $2 + local.get $5 i32.store8 local.get $0 - local.get $2 + local.get $6 i32.store8 offset=1 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $4 + local.get $14 i32.load - local.get $4 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $8 i32.and i32.const 2 i32.shl @@ -4699,21 +4624,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -4725,7 +4650,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -4738,18 +4663,18 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|6 - local.get $6 + local.get $0 i32.extend8_s i32.const 50 i32.lt_s if - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend8_s i32.const -1028477379 i32.mul @@ -4759,62 +4684,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find18 - loop $while-continue|019 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find20 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|019 + local.set $5 + br $while-continue|021 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 i32.eqz if i32.const 0 @@ -4824,10 +4749,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#get - local.get $6 + local.get $0 i32.extend8_s i32.const 20 i32.add @@ -4840,14 +4765,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#delete - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend8_s i32.const -1028477379 i32.mul @@ -4857,62 +4782,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find23 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|022 + local.set $5 + br $while-continue|024 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -4921,14 +4846,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|6 end end - local.get $5 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -4941,18 +4866,18 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|8 - local.get $6 + local.get $0 i32.extend8_s i32.const 50 i32.lt_s if - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend8_s i32.const -1028477379 i32.mul @@ -4962,62 +4887,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find24 - loop $while-continue|025 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find26 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|025 + local.set $5 + br $while-continue|027 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -5026,19 +4951,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 + local.get $4 + local.get $0 + local.get $0 i32.extend8_s - local.tee $2 + local.tee $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $2 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761394 @@ -5047,62 +4972,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find27 - loop $while-continue|028 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find29 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|028 + local.set $5 + br $while-continue|030 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 i32.eqz if i32.const 0 @@ -5112,14 +5037,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#delete - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend8_s i32.const -1028477379 i32.mul @@ -5129,62 +5054,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find30 - loop $while-continue|031 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find32 + loop $while-continue|033 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load8_u - local.get $6 + local.get $0 i32.const 255 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find32 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|031 + local.set $5 + br $while-continue|033 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -5193,14 +5118,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|8 end end - local.get $5 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -5212,9 +5137,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 call $~lib/map/Map#clear - local.get $5 + local.get $4 i32.load offset=20 if i32.const 0 @@ -5272,7 +5197,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -5280,7 +5205,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -5288,37 +5213,39 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load8_u local.tee $8 i32.store8 local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 local.get $8 + i32.const 255 + i32.and i32.const -1028477379 i32.mul i32.const 374761394 @@ -5328,29 +5255,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -5363,30 +5290,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -5399,50 +5332,51 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -5459,6 +5393,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -5467,9 +5402,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -5485,51 +5419,52 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -5546,6 +5481,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -5554,9 +5490,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -5577,14 +5512,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -5604,7 +5539,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -5626,15 +5561,16 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $4 i64.const 0 @@ -5652,7 +5588,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $5 i32.const 0 @@ -5661,34 +5597,40 @@ i32.const 24 i32.const 8 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $11 i32.store - local.get $5 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + if + local.get $11 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $5 + local.get $11 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store offset=8 local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + if + local.get $11 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $5 + local.get $11 i32.const 0 i32.store offset=16 - local.get $5 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -5696,7 +5638,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $4 - local.get $5 + local.get $11 i32.store loop $for-loop|1 local.get $2 @@ -5705,77 +5647,78 @@ i32.const 100 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|0 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $4 end - local.get $4 if i32.const 0 i32.const 1568 @@ -5784,84 +5727,86 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 local.get $2 i32.const 255 i32.and - local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $4 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find1 + block $__inlined_func$~lib/map/Map#find1 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|02 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -5871,7 +5816,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -5895,7 +5840,7 @@ br $for-loop|1 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -5913,80 +5858,81 @@ local.get $2 i32.const 255 i32.and - i32.const 100 - i32.lt_u - if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find4 + i32.const 100 + i32.lt_u + if + block $__inlined_func$~lib/map/Map#find4 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|05 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -5996,7 +5942,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -6013,84 +5959,86 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 local.get $2 i32.const 255 i32.and - local.tee $4 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $4 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 + block $__inlined_func$~lib/map/Map#find7 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|08 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load8_u - local.get $2 + local.get $4 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -6100,7 +6048,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -6124,7 +6072,7 @@ br $for-loop|3 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -6145,52 +6093,49 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $5 + local.get $11 i32.load offset=8 - local.set $11 - local.get $5 + local.set $5 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $4 - local.get $3 + local.tee $6 + local.set $7 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $8 i64.const 0 i64.store - local.get $2 + local.get $8 i32.const 16 i32.const 9 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $12 i32.store - local.get $2 + local.get $12 i32.const 0 i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $12 i32.const 0 i32.store offset=4 - local.get $2 + local.get $12 i32.const 0 i32.store offset=8 - local.get $2 + local.get $12 i32.const 0 i32.store offset=12 - local.get $4 + local.get $7 i32.const 1073741820 i32.gt_u if @@ -6202,92 +6147,94 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 8 - local.get $4 + local.get $7 i32.const 8 i32.gt_u select local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $9 i32.store offset=4 - local.get $0 + local.get $9 local.get $8 call $~lib/memory/memory.fill - local.get $2 - local.get $0 + local.get $12 + local.get $9 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 + local.get $9 + if + local.get $12 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $9 i32.store offset=4 - local.get $2 + local.get $12 local.get $8 i32.store offset=8 - local.get $2 - local.get $4 + local.get $12 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 local.get $2 + local.get $12 i32.store loop $for-loop|0 - local.get $7 - local.get $12 + local.get $1 + local.get $6 i32.lt_s if - local.get $7 + local.get $1 i32.const 12 i32.mul - local.get $11 + local.get $5 i32.add - local.tee $4 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if + local.get $12 + local.get $3 local.get $2 - local.get $1 - local.get $4 i32.load8_u call $~lib/array/Array#__set - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 end - local.get $7 + local.get $1 i32.const 1 i32.add - local.set $7 + local.set $1 br $for-loop|0 end end - local.get $2 - local.get $1 + local.get $12 + local.get $3 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 - local.get $1 + local.get $12 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.tee $1 + local.get $12 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $11 call $~lib/map/Map#values local.tee $13 i32.store offset=8 @@ -6299,64 +6246,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.const 10 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $4 + local.get $14 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $4 + local.get $14 i32.const 0 i32.store offset=16 - local.get $4 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|4 - local.get $1 + local.get $12 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $1 + local.get $12 i32.load offset=12 - local.get $6 + local.get $0 i32.le_u if i32.const 1248 @@ -6366,85 +6319,88 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $1 + local.get $0 + local.get $12 i32.load offset=4 i32.add i32.load8_u local.set $2 local.get $13 - local.get $6 - call $~lib/array/Array#__get - local.set $12 - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find10 + call $~lib/array/Array#__get + local.set $16 + block $__inlined_func$~lib/map/Map#find10 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $2 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -6454,62 +6410,63 @@ call $~lib/builtins/abort unreachable end - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $12 - i32.const 20 - i32.sub - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find13 + block $__inlined_func$~lib/map/Map#find13 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $16 + i32.const 20 + i32.sub + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|014 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 + local.get $1 i32.load offset=8 - local.tee $8 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load8_u local.get $3 i32.const 255 @@ -6517,17 +6474,16 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|014 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -6544,14 +6500,15 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $2 + local.set $3 + local.get $14 i32.load local.get $2 - local.tee $0 i32.const -1028477379 i32.mul i32.const 374761394 @@ -6560,79 +6517,79 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $7 i32.xor i32.const -2048144777 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $7 i32.xor i32.const -1028477379 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $7 i32.xor - local.tee $14 - local.get $4 + local.tee $6 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $1 block $__inlined_func$~lib/map/Map#find loop $while-continue|015 - local.get $7 + local.get $1 if - local.get $7 + local.get $1 i32.load offset=4 - local.tee $8 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $7 + local.get $1 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $8 + local.get $4 i32.const -2 i32.and - local.set $7 + local.set $1 br $while-continue|015 end end i32.const 0 - local.set $7 + local.set $1 end - local.get $7 + local.get $1 if - local.get $7 - local.get $2 + local.get $1 + local.get $3 i32.store8 offset=1 else - local.get $4 + local.get $14 i32.load offset=16 - local.get $4 + local.get $14 i32.load offset=12 i32.eq if - local.get $4 + local.get $14 i32.load offset=20 - local.get $4 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -6640,17 +6597,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $14 i32.load offset=4 else - local.get $4 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -6658,66 +6615,66 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 - local.get $7 + local.get $1 + local.get $8 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store offset=4 - local.get $4 + local.get $14 i32.load offset=8 - local.tee $8 - local.get $4 + local.tee $5 + local.get $14 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $16 - local.get $3 - local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 + local.set $10 + local.get $4 + local.set $1 + loop $while-continue|0216 + local.get $5 + local.get $10 i32.ne if - local.get $8 + local.get $5 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $0 - local.get $8 + local.get $1 + local.get $5 i32.load8_u - local.tee $9 + local.tee $17 i32.store8 - local.get $0 - local.get $8 + local.get $1 + local.get $5 i32.load8_u offset=1 i32.store8 offset=1 - local.get $0 - local.get $9 + local.get $1 + local.get $17 i32.const -1028477379 i32.mul i32.const 374761394 @@ -6726,69 +6683,75 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $7 + local.get $8 i32.and i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=4 - local.get $9 - local.get $0 + local.get $17 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 8 i32.add - local.set $0 + local.set $1 end - local.get $8 + local.get $5 i32.const 8 i32.add - local.set $8 - br $while-continue|016 + local.set $5 + br $while-continue|0216 end end - local.get $4 - local.get $10 + local.get $14 + local.get $9 i32.store - local.get $4 - local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 + local.get $9 + if + local.get $14 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $8 i32.store offset=4 + local.get $14 local.get $4 - local.get $3 i32.store offset=8 local.get $4 - local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 + if + local.get $14 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $7 i32.store offset=12 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -6797,40 +6760,40 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=8 - local.tee $0 + local.tee $1 i32.store - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $7 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $7 + local.get $4 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add - local.tee $0 + local.tee $1 local.get $2 i32.store8 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.store8 offset=1 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $0 - local.get $4 + local.get $1 + local.get $14 i32.load - local.get $4 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $6 i32.and i32.const 2 i32.shl @@ -6839,28 +6802,28 @@ i32.load i32.store offset=4 local.get $2 - local.get $0 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 call $~lib/map/Map#set - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -6872,7 +6835,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -6885,61 +6848,63 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|6 - local.get $6 + local.get $0 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find18 + block $__inlined_func$~lib/map/Map#find18 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|019 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -6947,13 +6912,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -6961,9 +6927,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if i32.const 0 @@ -6973,10 +6937,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#get - local.get $6 + local.get $0 i32.const 255 i32.and i32.const 20 @@ -6990,56 +6954,58 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 + block $__inlined_func$~lib/map/Map#find21 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|022 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7047,13 +7013,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -7061,9 +7028,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -7072,14 +7037,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|6 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -7092,61 +7057,63 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|8 - local.get $6 + local.get $0 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find24 + block $__inlined_func$~lib/map/Map#find24 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|025 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7154,13 +7121,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -7168,9 +7136,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -7179,60 +7145,63 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 + local.get $11 + local.get $0 + local.get $0 i32.const 255 i32.and - local.tee $2 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find27 + block $__inlined_func$~lib/map/Map#find27 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|028 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7240,13 +7209,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -7254,9 +7224,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if i32.const 0 @@ -7266,56 +7234,58 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find30 + block $__inlined_func$~lib/map/Map#find30 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|031 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -7323,13 +7293,14 @@ else local.get $2 i32.load8_u - local.get $6 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -7337,9 +7308,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -7348,14 +7317,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|8 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -7367,9 +7336,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 call $~lib/map/Map#clear - local.get $5 + local.get $11 i32.load offset=20 if i32.const 0 @@ -7427,7 +7396,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -7435,7 +7404,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -7443,33 +7412,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load16_s local.tee $8 i32.store16 local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 @@ -7484,29 +7453,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -7519,30 +7488,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -7555,49 +7530,50 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -7614,6 +7590,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -7622,9 +7599,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -7679,50 +7655,51 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -7739,6 +7716,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -7747,9 +7725,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -7770,14 +7747,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -7797,7 +7774,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -7819,89 +7796,96 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i64.const 0 i64.store - local.get $4 + local.get $5 i64.const 0 i64.store offset=8 - local.get $4 + local.get $5 i32.const 0 i32.store offset=16 - local.get $4 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store - local.get $5 + local.get $3 i32.const 24 i32.const 11 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 3 i32.store offset=4 - local.get $5 + local.get $3 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $6 i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.store offset=12 - local.get $5 + local.get $3 i32.const 0 i32.store offset=16 - local.get $5 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 local.get $5 + local.get $3 i32.store loop $for-loop|1 - local.get $2 + local.get $4 i32.extend16_s i32.const 100 i32.lt_s if - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $2 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -7911,62 +7895,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 if i32.const 0 i32.const 1568 @@ -7975,19 +7959,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 - local.get $2 + local.get $3 + local.get $4 + local.get $4 i32.extend16_s - local.tee $4 + local.tee $5 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761395 @@ -7996,62 +7980,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -8061,10 +8045,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend16_s i32.const 10 i32.add @@ -8077,14 +8061,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|1 end end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -8097,18 +8081,18 @@ unreachable end i32.const 0 - local.set $2 + local.set $4 loop $for-loop|3 - local.get $2 + local.get $4 i32.extend16_s i32.const 100 i32.lt_s if - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $2 + local.get $4 i32.extend16_s i32.const -1028477379 i32.mul @@ -8118,62 +8102,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -8183,10 +8167,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend16_s i32.const 10 i32.add @@ -8199,19 +8183,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 - local.get $2 + local.get $3 + local.get $4 + local.get $4 i32.extend16_s - local.tee $4 + local.tee $5 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 + local.get $3 i32.load - local.get $5 + local.get $3 i32.load offset=4 - local.get $4 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761395 @@ -8220,62 +8204,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $4 i32.xor i32.const -2048144777 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $4 i32.xor i32.const -1028477379 i32.mul - local.tee $4 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $4 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $4 + local.set $5 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $4 + local.set $5 end - local.get $4 + local.get $5 i32.eqz if i32.const 0 @@ -8285,10 +8269,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $2 + local.get $3 + local.get $4 call $~lib/map/Map#get - local.get $2 + local.get $4 i32.extend16_s i32.const 20 i32.add @@ -8301,14 +8285,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|3 end end - local.get $5 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -8321,60 +8305,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $3 + local.tee $4 i32.load offset=8 - local.set $11 - local.get $5 - i32.load offset=16 - local.tee $12 - local.set $4 + local.set $7 local.get $3 + i32.load offset=16 + local.tee $8 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i32.const 16 i32.const 12 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $3 i32.const 0 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.store offset=8 - local.get $2 + local.get $3 i32.const 0 i32.store offset=12 - local.get $4 + local.get $9 i32.const 536870910 i32.gt_u if @@ -8386,63 +8368,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $9 i32.const 8 - local.get $4 + local.get $9 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $8 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $11 i32.store offset=4 - local.get $0 - local.get $8 + local.get $11 + local.get $10 call $~lib/memory/memory.fill - local.get $2 - local.get $0 + local.get $3 + local.get $11 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 + local.get $11 + if + local.get $3 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $11 i32.store offset=4 - local.get $2 - local.get $8 + local.get $3 + local.get $10 i32.store offset=8 - local.get $2 - local.get $4 + local.get $3 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 local.get $3 - local.get $2 i32.store loop $for-loop|0 - local.get $7 - local.get $12 + local.get $2 + local.get $8 i32.lt_s if - local.get $7 + local.get $2 i32.const 12 i32.mul - local.get $11 + local.get $7 i32.add - local.tee $4 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $3 local.get $1 - local.get $4 + local.get $6 i32.load16_s call $~lib/array/Array#__set local.get $1 @@ -8450,30 +8435,29 @@ i32.add local.set $1 end - local.get $7 + local.get $2 i32.const 1 i32.add - local.set $7 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $3 local.get $1 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 + local.get $3 local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.tee $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 call $~lib/map/Map#values local.tee $13 i32.store offset=8 @@ -8485,65 +8469,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.const 13 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $4 + local.get $14 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $4 + local.get $14 i32.const 0 i32.store offset=16 - local.get $4 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|4 - local.get $1 + local.get $3 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $1 + local.get $0 + local.tee $1 + local.get $3 i32.load offset=12 - local.get $6 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -8552,23 +8543,24 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.load offset=4 - local.get $6 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s - local.set $2 + local.set $5 local.get $13 - local.get $6 + local.get $1 call $~lib/array/Array#__get - local.set $12 - local.get $5 + local.set $16 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $2 + local.get $5 + local.tee $6 i32.extend16_s i32.const -1028477379 i32.mul @@ -8579,23 +8571,23 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 @@ -8603,13 +8595,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 + block $__inlined_func$~lib/map/Map#find12 + loop $while-continue|013 local.get $0 if local.get $0 i32.load offset=8 - local.tee $3 + local.tee $2 i32.const 1 i32.and if (result i32) @@ -8617,17 +8609,17 @@ else local.get $0 i32.load16_u - local.get $2 + local.get $6 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 + br_if $__inlined_func$~lib/map/Map#find12 + local.get $2 i32.const -2 i32.and local.set $0 - br $while-continue|011 + br $while-continue|013 end end i32.const 0 @@ -8643,14 +8635,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $12 + local.get $16 i32.const 20 i32.sub - local.tee $3 + local.tee $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -8661,23 +8653,23 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 @@ -8685,13 +8677,13 @@ i32.add i32.load local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 local.get $0 if local.get $0 i32.load offset=8 - local.tee $8 + local.tee $7 i32.const 1 i32.and if (result i32) @@ -8699,17 +8691,17 @@ else local.get $0 i32.load16_u - local.get $3 + local.get $2 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $7 i32.const -2 i32.and local.set $0 - br $while-continue|014 + br $while-continue|016 end end i32.const 0 @@ -8732,14 +8724,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $14 i32.load - local.get $2 - local.tee $0 + local.get $5 i32.extend16_s i32.const -1028477379 i32.mul @@ -8749,79 +8740,80 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $7 i32.xor i32.const -2048144777 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $7 i32.xor i32.const -1028477379 i32.mul - local.tee $7 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $7 i32.xor - local.tee $14 - local.get $4 + local.tee $8 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $2 block $__inlined_func$~lib/map/Map#find - loop $while-continue|015 - local.get $7 + loop $while-continue|017 + local.get $2 if - local.get $7 + local.get $2 + local.tee $0 i32.load offset=4 - local.tee $8 + local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $7 - i32.load16_u local.get $0 + i32.load16_u + local.get $6 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $8 + local.get $2 i32.const -2 i32.and - local.set $7 - br $while-continue|015 + local.set $2 + br $while-continue|017 end end i32.const 0 - local.set $7 + local.set $0 end - local.get $7 + local.get $0 if - local.get $7 - local.get $2 + local.get $0 + local.get $6 i32.store16 offset=2 else - local.get $4 + local.get $14 i32.load offset=16 - local.get $4 + local.get $14 i32.load offset=12 i32.eq if - local.get $4 + local.get $14 i32.load offset=20 - local.get $4 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -8829,17 +8821,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $14 i32.load offset=4 else - local.get $4 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8847,20 +8839,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $7 + local.get $10 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $11 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -8868,45 +8860,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $9 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $4 + local.get $14 i32.load offset=8 - local.tee $8 - local.get $4 + local.tee $7 + local.get $14 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $16 - local.get $3 + local.set $12 + local.get $2 local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 + loop $while-continue|018 + local.get $7 + local.get $12 i32.ne if - local.get $8 + local.get $7 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $8 + local.get $7 i32.load16_s - local.tee $9 + local.tee $17 i32.store16 local.get $0 - local.get $8 + local.get $7 i32.load16_s offset=2 i32.store16 offset=2 local.get $0 - local.get $9 + local.get $17 i32.extend16_s i32.const -1028477379 i32.mul @@ -8916,35 +8908,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $7 + local.get $10 i32.and i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=4 - local.get $9 + local.get $17 local.get $0 i32.store local.get $0 @@ -8952,33 +8944,39 @@ i32.add local.set $0 end - local.get $8 + local.get $7 i32.const 8 i32.add - local.set $8 - br $while-continue|016 + local.set $7 + br $while-continue|018 end end - local.get $4 - local.get $10 + local.get $14 + local.get $11 i32.store - local.get $4 + local.get $11 + if + local.get $14 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 i32.store offset=4 - local.get $4 - local.get $3 + local.get $14 + local.get $2 i32.store offset=8 - local.get $4 - local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $9 i32.store offset=12 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -8987,40 +8985,40 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=8 local.tee $0 i32.store - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $7 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $7 + local.get $2 i32.const 3 i32.shl local.get $0 i32.add local.tee $0 - local.get $2 + local.get $5 i32.store16 local.get $0 - local.get $2 + local.get $6 i32.store16 offset=2 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $4 + local.get $14 i32.load - local.get $4 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $8 i32.and i32.const 2 i32.shl @@ -9036,21 +9034,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 call $~lib/map/Map#set - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -9062,7 +9060,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -9075,18 +9073,18 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|6 - local.get $6 + local.get $0 i32.extend16_s i32.const 50 i32.lt_s if - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend16_s i32.const -1028477379 i32.mul @@ -9096,62 +9094,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find18 - loop $while-continue|019 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find20 + loop $while-continue|021 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find20 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|019 + local.set $5 + br $while-continue|021 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 i32.eqz if i32.const 0 @@ -9161,10 +9159,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#get - local.get $6 + local.get $0 i32.extend16_s i32.const 20 i32.add @@ -9177,14 +9175,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#delete - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend16_s i32.const -1028477379 i32.mul @@ -9194,62 +9192,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 - loop $while-continue|022 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find23 + loop $while-continue|024 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find23 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|022 + local.set $5 + br $while-continue|024 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -9258,14 +9256,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|6 end end - local.get $5 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -9278,18 +9276,18 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|8 - local.get $6 + local.get $0 i32.extend16_s i32.const 50 i32.lt_s if - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend16_s i32.const -1028477379 i32.mul @@ -9299,62 +9297,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find24 - loop $while-continue|025 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find26 + loop $while-continue|027 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find26 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|025 + local.set $5 + br $while-continue|027 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -9363,19 +9361,19 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 + local.get $4 + local.get $0 + local.get $0 i32.extend16_s - local.tee $2 + local.tee $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $2 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761395 @@ -9384,62 +9382,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find27 - loop $while-continue|028 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find29 + loop $while-continue|030 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find29 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|028 + local.set $5 + br $while-continue|030 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 i32.eqz if i32.const 0 @@ -9449,14 +9447,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $4 + local.get $0 call $~lib/map/Map#delete - local.get $5 + local.get $4 i32.load - local.get $5 + local.get $4 i32.load offset=4 - local.get $6 + local.get $0 i32.extend16_s i32.const -1028477379 i32.mul @@ -9466,62 +9464,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $2 i32.xor i32.const -2048144777 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $2 i32.xor i32.const -1028477379 i32.mul - local.tee $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $2 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find30 - loop $while-continue|031 - local.get $2 + local.set $5 + block $__inlined_func$~lib/map/Map#find32 + loop $while-continue|033 + local.get $5 if - local.get $2 + local.get $5 i32.load offset=8 - local.tee $0 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $2 + local.get $5 i32.load16_u - local.get $6 + local.get $0 i32.const 65535 i32.and i32.eq end - br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + br_if $__inlined_func$~lib/map/Map#find32 + local.get $1 i32.const -2 i32.and - local.set $2 - br $while-continue|031 + local.set $5 + br $while-continue|033 end end i32.const 0 - local.set $2 + local.set $5 end - local.get $2 + local.get $5 if i32.const 0 i32.const 1568 @@ -9530,14 +9528,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|8 end end - local.get $5 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -9549,9 +9547,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $4 call $~lib/map/Map#clear - local.get $5 + local.get $4 i32.load offset=20 if i32.const 0 @@ -9609,7 +9607,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -9617,7 +9615,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -9625,37 +9623,39 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load16_u local.tee $8 i32.store16 local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 local.get $8 + i32.const 65535 + i32.and i32.const -1028477379 i32.mul i32.const 374761395 @@ -9665,29 +9665,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -9700,30 +9700,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -9736,50 +9742,51 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -9796,6 +9803,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -9804,9 +9812,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -9822,51 +9829,52 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -9883,6 +9891,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -9891,9 +9900,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -9914,14 +9922,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -9941,7 +9949,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -9963,15 +9971,16 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $4 i64.const 0 @@ -9989,7 +9998,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $5 i32.const 0 @@ -9998,34 +10007,40 @@ i32.const 24 i32.const 14 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $11 i32.store - local.get $5 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + if + local.get $11 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $5 + local.get $11 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $5 i32.store offset=8 local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + if + local.get $11 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $5 + local.get $11 i32.const 0 i32.store offset=16 - local.get $5 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -10033,7 +10048,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $4 - local.get $5 + local.get $11 i32.store loop $for-loop|1 local.get $2 @@ -10042,77 +10057,78 @@ i32.const 100 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|0 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $4 end - local.get $4 if i32.const 0 i32.const 1568 @@ -10121,84 +10137,86 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 local.get $2 i32.const 65535 i32.and - local.tee $4 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $4 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find1 + block $__inlined_func$~lib/map/Map#find1 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|02 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -10208,7 +10226,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -10232,7 +10250,7 @@ br $for-loop|1 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -10253,77 +10271,78 @@ i32.const 100 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find4 + block $__inlined_func$~lib/map/Map#find4 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|05 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -10333,7 +10352,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -10342,92 +10361,94 @@ i32.const 10 i32.add i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $2 - local.get $2 - i32.const 65535 - i32.and - local.tee $4 - i32.const 20 - i32.add - call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $4 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $4 - i32.const 15 - i32.shr_u - local.get $4 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $4 - i32.const 13 - i32.shr_u - local.get $4 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $4 - i32.const 16 - i32.shr_u - local.get $4 - i32.xor + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $11 + local.get $2 + local.get $2 + i32.const 65535 i32.and - i32.const 2 - i32.shl + i32.const 20 i32.add - i32.load - local.set $4 - block $__inlined_func$~lib/map/Map#find7 + call $~lib/map/Map#set + block $__inlined_func$~lib/map/Map#find7 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $4 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|08 - local.get $4 + local.get $5 if - local.get $4 + local.get $5 + local.get $5 i32.load offset=8 - local.tee $3 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 + local.get $5 i32.load16_u - local.get $2 + local.get $4 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $3 + drop + local.get $6 i32.const -2 i32.and - local.set $4 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $4 end - local.get $4 i32.eqz if i32.const 0 @@ -10437,7 +10458,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 local.get $2 call $~lib/map/Map#get local.get $2 @@ -10461,7 +10482,7 @@ br $for-loop|3 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -10482,52 +10503,49 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $5 + local.get $11 i32.load offset=8 - local.set $11 - local.get $5 + local.set $5 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $4 - local.get $3 + local.tee $6 + local.set $7 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $8 i64.const 0 i64.store - local.get $2 + local.get $8 i32.const 16 i32.const 15 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $12 i32.store - local.get $2 + local.get $12 i32.const 0 i32.store - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $12 i32.const 0 i32.store offset=4 - local.get $2 + local.get $12 i32.const 0 i32.store offset=8 - local.get $2 + local.get $12 i32.const 0 i32.store offset=12 - local.get $4 + local.get $7 i32.const 536870910 i32.gt_u if @@ -10539,9 +10557,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 8 - local.get $4 + local.get $7 i32.const 8 i32.gt_u select @@ -10550,83 +10568,85 @@ local.tee $8 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $9 i32.store offset=4 - local.get $0 + local.get $9 local.get $8 call $~lib/memory/memory.fill - local.get $2 - local.get $0 + local.get $12 + local.get $9 i32.store - local.get $2 - local.get $0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $0 + local.get $9 + if + local.get $12 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $9 i32.store offset=4 - local.get $2 + local.get $12 local.get $8 i32.store offset=8 - local.get $2 - local.get $4 + local.get $12 + local.get $7 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 local.get $2 + local.get $12 i32.store loop $for-loop|0 - local.get $7 - local.get $12 + local.get $1 + local.get $6 i32.lt_s if - local.get $7 + local.get $1 i32.const 12 i32.mul - local.get $11 + local.get $5 i32.add - local.tee $4 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if + local.get $12 + local.get $3 local.get $2 - local.get $1 - local.get $4 i32.load16_u call $~lib/array/Array#__set - local.get $1 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 end - local.get $7 + local.get $1 i32.const 1 i32.add - local.set $7 + local.set $1 br $for-loop|0 end end - local.get $2 - local.get $1 + local.get $12 + local.get $3 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $2 - local.get $1 + local.get $12 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.tee $1 + local.get $12 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $11 call $~lib/map/Map#values local.tee $13 i32.store offset=8 @@ -10638,64 +10658,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.const 16 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $4 + local.get $14 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $2 i32.store offset=8 - local.get $4 - local.get $0 - call $~lib/rt/itcms/__link - local.get $4 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $4 + local.get $14 i32.const 0 i32.store offset=16 - local.get $4 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|4 - local.get $1 + local.get $12 i32.load offset=12 - local.get $6 + local.get $0 i32.gt_s if - local.get $1 + local.get $12 i32.load offset=12 - local.get $6 + local.get $0 i32.le_u if i32.const 1248 @@ -10705,87 +10731,90 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $12 i32.load offset=4 - local.get $6 + local.get $0 i32.const 1 i32.shl i32.add i32.load16_u local.set $2 local.get $13 - local.get $6 - call $~lib/array/Array#__get - local.set $12 - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find10 + call $~lib/array/Array#__get + local.set $16 + block $__inlined_func$~lib/map/Map#find10 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $2 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $2 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $3 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -10795,62 +10824,63 @@ call $~lib/builtins/abort unreachable end - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $12 - i32.const 20 - i32.sub - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find13 + block $__inlined_func$~lib/map/Map#find13 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $16 + i32.const 20 + i32.sub + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|014 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 + local.get $1 i32.load offset=8 - local.tee $8 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load16_u local.get $3 i32.const 65535 @@ -10858,17 +10888,16 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $8 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|014 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -10885,14 +10914,15 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $4 + local.get $2 + local.set $3 + local.get $14 i32.load local.get $2 - local.tee $0 i32.const -1028477379 i32.mul i32.const 374761395 @@ -10901,79 +10931,79 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $7 i32.xor i32.const -2048144777 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $7 i32.xor i32.const -1028477379 i32.mul - local.tee $7 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $7 i32.xor - local.tee $14 - local.get $4 + local.tee $6 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $1 block $__inlined_func$~lib/map/Map#find loop $while-continue|015 - local.get $7 + local.get $1 if - local.get $7 + local.get $1 i32.load offset=4 - local.tee $8 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $7 + local.get $1 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $8 + local.get $4 i32.const -2 i32.and - local.set $7 + local.set $1 br $while-continue|015 end end i32.const 0 - local.set $7 + local.set $1 end - local.get $7 + local.get $1 if - local.get $7 - local.get $2 + local.get $1 + local.get $3 i32.store16 offset=2 else - local.get $4 + local.get $14 i32.load offset=16 - local.get $4 + local.get $14 i32.load offset=12 i32.eq if - local.get $4 + local.get $14 i32.load offset=20 - local.get $4 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -10981,17 +11011,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $14 i32.load offset=4 else - local.get $4 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -10999,66 +11029,66 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 - local.get $7 + local.get $1 + local.get $8 i32.const 1 i32.add - local.tee $0 + local.tee $1 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $9 i32.store global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 3 i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $7 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $4 i32.store offset=4 - local.get $4 + local.get $14 i32.load offset=8 - local.tee $8 - local.get $4 + local.tee $5 + local.get $14 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $16 - local.get $3 - local.set $0 - loop $while-continue|016 - local.get $8 - local.get $16 + local.set $10 + local.get $4 + local.set $1 + loop $while-continue|0216 + local.get $5 + local.get $10 i32.ne if - local.get $8 + local.get $5 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $0 - local.get $8 + local.get $1 + local.get $5 i32.load16_u - local.tee $9 + local.tee $17 i32.store16 - local.get $0 - local.get $8 + local.get $1 + local.get $5 i32.load16_u offset=2 i32.store16 offset=2 - local.get $0 - local.get $9 + local.get $1 + local.get $17 i32.const -1028477379 i32.mul i32.const 374761395 @@ -11067,69 +11097,75 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $7 + local.get $8 i32.and i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=4 - local.get $9 - local.get $0 + local.get $17 + local.get $1 i32.store - local.get $0 + local.get $1 i32.const 8 i32.add - local.set $0 + local.set $1 end - local.get $8 + local.get $5 i32.const 8 i32.add - local.set $8 - br $while-continue|016 + local.set $5 + br $while-continue|0216 end end - local.get $4 - local.get $10 + local.get $14 + local.get $9 i32.store - local.get $4 - local.get $10 - call $~lib/rt/itcms/__link - local.get $4 - local.get $7 + local.get $9 + if + local.get $14 + local.get $9 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $8 i32.store offset=4 + local.get $14 local.get $4 - local.get $3 i32.store offset=8 local.get $4 - local.get $3 - call $~lib/rt/itcms/__link - local.get $4 - local.get $15 + if + local.get $14 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $7 i32.store offset=12 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -11138,40 +11174,40 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=8 - local.tee $0 + local.tee $1 i32.store - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $7 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $7 + local.get $4 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add - local.tee $0 + local.tee $1 local.get $2 i32.store16 - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.store16 offset=2 - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $0 - local.get $4 + local.get $1 + local.get $14 i32.load - local.get $4 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $6 i32.and i32.const 2 i32.shl @@ -11180,28 +11216,28 @@ i32.load i32.store offset=4 local.get $2 - local.get $0 + local.get $1 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 call $~lib/map/Map#set - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|4 end end - local.get $4 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -11213,7 +11249,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -11226,61 +11262,63 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|6 - local.get $6 + local.get $0 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find18 + block $__inlined_func$~lib/map/Map#find18 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|019 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11288,13 +11326,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find18 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11302,9 +11341,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if i32.const 0 @@ -11314,10 +11351,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#get - local.get $6 + local.get $0 i32.const 65535 i32.and i32.const 20 @@ -11331,56 +11368,58 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find21 + block $__inlined_func$~lib/map/Map#find21 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|022 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11388,13 +11427,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find21 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11402,9 +11442,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -11413,14 +11451,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|6 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -11433,61 +11471,63 @@ unreachable end i32.const 0 - local.set $6 + local.set $0 loop $for-loop|8 - local.get $6 + local.get $0 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find24 + block $__inlined_func$~lib/map/Map#find24 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|025 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11495,13 +11535,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find24 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11509,9 +11550,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -11520,60 +11559,63 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 - local.get $6 + local.get $11 + local.get $0 + local.get $0 i32.const 65535 i32.and - local.tee $2 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $2 - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find27 + block $__inlined_func$~lib/map/Map#find27 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|028 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11581,13 +11623,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find27 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11595,9 +11638,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if i32.const 0 @@ -11607,56 +11648,58 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $6 + local.get $11 + local.get $0 call $~lib/map/Map#delete - local.get $5 - i32.load - local.get $5 - i32.load offset=4 - local.get $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - i32.const 15 - i32.shr_u - local.get $2 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - i32.const 13 - i32.shr_u - local.get $2 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - i32.const 16 - i32.shr_u - local.get $2 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find30 + block $__inlined_func$~lib/map/Map#find30 (result i32) + local.get $11 + i32.load + local.get $11 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|031 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $3 i32.const 1 i32.and if (result i32) @@ -11664,13 +11707,14 @@ else local.get $2 i32.load16_u - local.get $6 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find30 - local.get $0 + drop + local.get $3 i32.const -2 i32.and local.set $2 @@ -11678,9 +11722,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 if i32.const 0 i32.const 1568 @@ -11689,14 +11731,14 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 i32.const 1 i32.add - local.set $6 + local.set $0 br $for-loop|8 end end - local.get $5 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -11708,9 +11750,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 call $~lib/map/Map#clear - local.get $5 + local.get $11 i32.load offset=20 if i32.const 0 @@ -11735,48 +11777,49 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -11791,6 +11834,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -11799,9 +11843,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -11817,49 +11860,50 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -11874,6 +11918,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -11882,9 +11927,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -11905,14 +11949,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -11932,7 +11976,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -11969,18 +12013,18 @@ i32.store offset=16 local.get $2 call $~lib/map/Map#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|0 - local.get $0 + local.get $3 i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11989,60 +12033,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $2 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $2 if - local.get $1 + local.get $2 i32.load offset=8 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $3 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 if i32.const 0 i32.const 1568 @@ -12051,17 +12095,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - local.get $0 + local.get $4 + local.get $3 + local.get $3 i32.const 10 i32.add call $~lib/map/Map#set - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12070,60 +12114,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $2 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $1 + local.get $2 if - local.get $1 + local.get $2 i32.load offset=8 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $3 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.eqz if i32.const 0 @@ -12133,10 +12177,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $0 + local.get $3 i32.const 10 i32.add i32.ne @@ -12148,14 +12192,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -12168,17 +12212,17 @@ unreachable end i32.const 0 - local.set $0 + local.set $3 loop $for-loop|1 - local.get $0 + local.get $3 i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12187,60 +12231,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $2 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $1 + local.get $2 if - local.get $1 + local.get $2 i32.load offset=8 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $3 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.eqz if i32.const 0 @@ -12250,10 +12294,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $0 + local.get $3 i32.const 10 i32.add i32.ne @@ -12265,17 +12309,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - local.get $0 + local.get $4 + local.get $3 + local.get $3 i32.const 20 i32.add call $~lib/map/Map#set - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12284,60 +12328,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $2 + local.get $2 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $2 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $1 + local.get $2 if - local.get $1 + local.get $2 i32.load offset=8 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $3 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $2 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.eqz if i32.const 0 @@ -12347,10 +12391,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $0 + local.get $3 i32.const 20 i32.add i32.ne @@ -12362,14 +12406,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -12382,10 +12426,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -12394,38 +12436,38 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $5 - local.get $1 + local.set $7 local.get $2 + local.get $4 i32.load offset=16 - local.tee $8 + local.tee $2 call $~lib/array/Array#constructor - local.tee $1 + local.tee $3 i32.store loop $for-loop|01 - local.get $3 - local.get $8 - i32.lt_s + local.get $2 + local.get $5 + i32.gt_s if - local.get $3 + local.get $5 i32.const 12 i32.mul - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $3 local.get $0 - local.get $6 + local.get $8 i32.load call $~lib/array/Array#__set local.get $0 @@ -12433,59 +12475,59 @@ i32.add local.set $0 end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|01 end end - local.get $1 + local.get $3 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $3 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 call $~lib/map/Map#values - local.tee $9 + local.tee $5 i32.store offset=8 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $7 + local.tee $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $5 + local.tee $7 i32.store offset=16 loop $for-loop|2 - local.get $1 + local.get $3 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if + local.get $3 local.get $1 - local.get $4 - call $~lib/array/Array#__get - local.set $0 - local.get $9 - local.get $4 call $~lib/array/Array#__get local.set $8 - local.get $2 + local.get $5 + local.get $1 + call $~lib/array/Array#__get + local.set $9 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $8 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12494,60 +12536,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/map/Map#find10 loop $while-continue|011 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=8 - local.tee $6 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $8 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find10 - local.get $6 + local.get $0 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|011 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 i32.eqz if i32.const 0 @@ -12557,14 +12599,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $8 + local.get $9 i32.const 20 i32.sub - local.tee $6 + local.tee $10 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12573,60 +12615,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $2 block $__inlined_func$~lib/map/Map#find13 loop $while-continue|014 - local.get $3 + local.get $2 if - local.get $3 + local.get $2 i32.load offset=8 - local.tee $10 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 - local.get $3 + local.get $10 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find13 - local.get $10 + local.get $0 i32.const -2 i32.and - local.set $3 + local.set $2 br $while-continue|014 end end i32.const 0 - local.set $3 + local.set $2 end - local.get $3 + local.get $2 i32.eqz if i32.const 0 @@ -12636,25 +12678,25 @@ call $~lib/builtins/abort unreachable end - local.get $7 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $5 + local.get $6 + local.get $8 local.get $8 + call $~lib/map/Map#set + local.get $7 + local.get $9 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|2 end end - local.get $7 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -12666,7 +12708,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.load offset=20 i32.const 100 i32.ne @@ -12679,17 +12721,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|3 - local.get $4 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12699,59 +12741,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find16 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -12761,10 +12803,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/map/Map#get - local.get $4 + local.get $1 i32.const 20 i32.add i32.ne @@ -12776,14 +12818,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/map/Map#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12793,59 +12835,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find19 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -12854,14 +12896,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -12874,17 +12916,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|4 - local.get $4 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12894,59 +12936,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find22 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -12955,17 +12997,17 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 local.get $4 + local.get $1 + local.get $1 i32.const 10 i32.add call $~lib/map/Map#set - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12975,59 +13017,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find25 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.eqz if i32.const 0 @@ -13037,14 +13079,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/map/Map#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13054,59 +13096,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $2 block $__inlined_func$~lib/map/Map#find28 loop $while-continue|029 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 i32.load offset=8 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $2 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find28 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|029 end end i32.const 0 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 if i32.const 0 i32.const 1568 @@ -13115,14 +13157,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -13134,9 +13176,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/map/Map#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -13194,7 +13236,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -13202,7 +13244,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor @@ -13210,33 +13252,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $7 i32.ne if - local.get $7 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $5 i32.load local.tee $8 i32.store local.get $2 - local.get $7 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 @@ -13250,29 +13292,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $4 i32.add local.tee $8 i32.load @@ -13285,30 +13327,36 @@ i32.add local.set $2 end - local.get $7 + local.get $5 i32.const 12 i32.add - local.set $7 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $4 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -13321,48 +13369,49 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -13377,6 +13426,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -13385,9 +13435,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -13403,49 +13452,50 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=8 local.tee $3 @@ -13460,6 +13510,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -13468,9 +13519,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -13491,14 +13541,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -13518,7 +13568,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/map/Map#rehash end ) @@ -13540,88 +13590,95 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $5 i64.const 0 i64.store - local.get $3 + local.get $5 i64.const 0 i64.store offset=8 - local.get $3 + local.get $5 i32.const 0 i32.store offset=16 - local.get $3 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 24 i32.const 17 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.store - local.get $4 + local.get $3 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $6 i32.store - local.get $4 - local.get $1 - call $~lib/rt/itcms/__link - local.get $4 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 3 i32.store offset=4 - local.get $4 + local.get $3 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $6 i32.store offset=8 - local.get $4 - local.get $1 - call $~lib/rt/itcms/__link - local.get $4 + local.get $6 + if + local.get $3 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.store offset=12 - local.get $4 + local.get $3 i32.const 0 i32.store offset=16 - local.get $4 + local.get $3 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 local.get $3 - local.get $4 i32.store loop $for-loop|0 - local.get $0 + local.get $4 i32.const 100 i32.lt_u if - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $0 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13630,60 +13687,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=8 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 if i32.const 0 i32.const 1568 @@ -13692,17 +13749,17 @@ call $~lib/builtins/abort unreachable end + local.get $3 + local.get $4 local.get $4 - local.get $0 - local.get $0 i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $0 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13711,60 +13768,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=8 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 i32.eqz if i32.const 0 @@ -13774,10 +13831,10 @@ call $~lib/builtins/abort unreachable end + local.get $3 local.get $4 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $4 i32.const 10 i32.add i32.ne @@ -13789,14 +13846,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|0 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -13809,17 +13866,17 @@ unreachable end i32.const 0 - local.set $0 + local.set $4 loop $for-loop|1 - local.get $0 + local.get $4 i32.const 100 i32.lt_u if - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $0 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13828,60 +13885,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=8 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 i32.eqz if i32.const 0 @@ -13891,10 +13948,10 @@ call $~lib/builtins/abort unreachable end + local.get $3 local.get $4 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $4 i32.const 10 i32.add i32.ne @@ -13906,17 +13963,17 @@ call $~lib/builtins/abort unreachable end + local.get $3 + local.get $4 local.get $4 - local.get $0 - local.get $0 i32.const 20 i32.add call $~lib/map/Map#set - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $0 + local.get $4 i32.const -1028477379 i32.mul i32.const 374761397 @@ -13925,60 +13982,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 15 i32.shr_u - local.get $3 i32.xor i32.const -2048144777 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 13 i32.shr_u - local.get $3 i32.xor i32.const -1028477379 i32.mul - local.tee $3 + local.tee $5 + local.get $5 i32.const 16 i32.shr_u - local.get $3 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $3 + local.set $5 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $3 + local.get $5 if - local.get $3 + local.get $5 i32.load offset=8 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $3 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $3 + local.set $5 end - local.get $3 + local.get $5 i32.eqz if i32.const 0 @@ -13988,10 +14045,10 @@ call $~lib/builtins/abort unreachable end + local.get $3 local.get $4 - local.get $0 call $~lib/map/Map#get - local.get $0 + local.get $4 i32.const 20 i32.add i32.ne @@ -14003,14 +14060,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 + local.set $4 br $for-loop|1 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 100 i32.ne @@ -14023,62 +14080,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - local.set $0 - local.get $3 + local.tee $4 + local.get $4 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $6 i32.const 0 i32.store - local.get $4 + local.get $3 + local.tee $4 i32.load offset=8 - local.set $11 - local.get $4 + local.set $7 + local.get $3 i32.load offset=16 - local.tee $12 - local.set $3 - local.get $2 + local.tee $8 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $3 i32.store - local.get $6 + local.get $3 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $3 i32.const 0 i32.store offset=4 - local.get $6 + local.get $3 i32.const 0 i32.store offset=8 - local.get $6 + local.get $3 i32.const 0 i32.store offset=12 - local.get $3 + local.get $9 i32.const 268435455 i32.gt_u if @@ -14090,90 +14143,93 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.const 8 - local.get $3 + local.get $9 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $7 + local.tee $10 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $11 i32.store offset=4 - local.get $1 - local.get $7 + local.get $11 + local.get $10 call $~lib/memory/memory.fill - local.get $6 - local.get $1 + local.get $3 + local.get $11 i32.store - local.get $6 - local.get $1 - call $~lib/rt/itcms/__link - local.get $6 - local.get $1 + local.get $11 + if + local.get $3 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $11 i32.store offset=4 - local.get $6 - local.get $7 + local.get $3 + local.get $10 i32.store offset=8 - local.get $6 local.get $3 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 local.get $6 + local.get $3 i32.store loop $for-loop|01 + local.get $2 local.get $8 - local.get $12 i32.lt_s if - local.get $8 + local.get $2 i32.const 12 i32.mul - local.get $11 + local.get $7 i32.add - local.tee $3 + local.tee $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $6 - local.get $0 local.get $3 + local.get $1 + local.get $6 i32.load call $~lib/array/Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 end - local.get $8 + local.get $2 i32.const 1 i32.add - local.set $8 + local.set $2 br $for-loop|01 end end - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - local.get $0 + local.get $3 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -14188,65 +14244,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.const 19 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $14 i32.store - local.get $3 + local.get $14 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 3 i32.store offset=4 - local.get $3 + local.get $14 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=8 - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 i32.const 4 i32.store offset=12 - local.get $3 + local.get $14 i32.const 0 i32.store offset=16 - local.get $3 + local.get $14 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $14 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $15 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $3 i32.load offset=12 - local.get $5 + local.get $0 i32.gt_s if - local.get $6 + local.get $0 + local.tee $1 + local.get $3 i32.load offset=12 - local.get $5 - i32.le_u + i32.ge_u if i32.const 1248 i32.const 1728 @@ -14255,23 +14318,24 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.load offset=4 - local.get $5 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $5 local.get $13 - local.get $5 + local.get $1 call $~lib/array/Array#__get - local.set $12 + local.set $16 local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $0 + local.get $5 + local.tee $6 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14280,36 +14344,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find12 + loop $while-continue|013 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 local.tee $2 i32.const 1 @@ -14317,23 +14381,23 @@ if (result i32) i32.const 0 else + local.get $6 local.get $0 - local.get $1 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find10 + br_if $__inlined_func$~lib/map/Map#find12 local.get $2 i32.const -2 i32.and - local.set $1 - br $while-continue|011 + local.set $0 + br $while-continue|013 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -14347,7 +14411,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $12 + local.get $16 i32.const 20 i32.sub local.tee $2 @@ -14359,36 +14423,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 local.tee $7 i32.const 1 @@ -14397,22 +14461,22 @@ i32.const 0 else local.get $2 - local.get $1 + local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find13 + br_if $__inlined_func$~lib/map/Map#find15 local.get $7 i32.const -2 i32.and - local.set $1 - br $while-continue|014 + local.set $0 + br $while-continue|016 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -14429,14 +14493,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $14 i32.load - local.get $0 - local.tee $1 + local.get $5 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14446,38 +14509,39 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $14 - local.get $3 + local.tee $8 + local.get $14 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find15 - loop $while-continue|016 - local.get $0 + local.set $2 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $2 if - local.get $0 + local.get $2 + local.tee $0 i32.load offset=8 local.tee $2 i32.const 1 @@ -14485,17 +14549,17 @@ if (result i32) i32.const 0 else - local.get $1 + local.get $6 local.get $0 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find15 + br_if $__inlined_func$~lib/map/Map#find17 local.get $2 i32.const -2 i32.and - local.set $0 - br $while-continue|016 + local.set $2 + br $while-continue|018 end end i32.const 0 @@ -14504,18 +14568,18 @@ local.get $0 if local.get $0 - local.get $1 + local.get $6 i32.store offset=4 else - local.get $3 + local.get $14 i32.load offset=16 - local.get $3 + local.get $14 i32.load offset=12 i32.eq if - local.get $3 + local.get $14 i32.load offset=20 - local.get $3 + local.get $14 i32.load offset=12 i32.const 3 i32.mul @@ -14523,17 +14587,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $14 i32.load offset=4 else - local.get $3 + local.get $14 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $8 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14541,20 +14605,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $8 + local.get $10 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $10 + local.tee $11 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -14562,26 +14626,26 @@ i32.shl i32.const 3 i32.div_s - local.tee $15 + local.tee $9 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $3 + local.get $14 i32.load offset=8 local.tee $7 - local.get $3 + local.get $14 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $16 + local.set $12 local.get $2 local.set $0 - loop $while-continue|017 + loop $while-continue|019 local.get $7 - local.get $16 + local.get $12 i32.ne if local.get $7 @@ -14593,14 +14657,14 @@ local.get $0 local.get $7 i32.load - local.tee $9 + local.tee $17 i32.store local.get $0 local.get $7 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $9 + local.get $17 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14609,35 +14673,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $9 i32.xor i32.const -2048144777 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $9 i32.xor i32.const -1028477379 i32.mul - local.tee $9 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $9 i32.xor - local.get $8 + local.get $10 i32.and i32.const 2 i32.shl - local.get $10 + local.get $11 i32.add - local.tee $9 + local.tee $17 i32.load i32.store offset=8 - local.get $9 + local.get $17 local.get $0 i32.store local.get $0 @@ -14649,29 +14713,35 @@ i32.const 12 i32.add local.set $7 - br $while-continue|017 + br $while-continue|019 end end - local.get $3 - local.get $10 + local.get $14 + local.get $11 i32.store - local.get $3 + local.get $11 + if + local.get $14 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 local.get $10 - call $~lib/rt/itcms/__link - local.get $3 - local.get $8 i32.store offset=4 - local.get $3 + local.get $14 local.get $2 i32.store offset=8 - local.get $3 local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $15 + if + local.get $14 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $14 + local.get $9 i32.store offset=12 - local.get $3 - local.get $3 + local.get $14 + local.get $14 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -14680,48 +14750,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $14 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $14 + local.get $14 i32.load offset=16 - local.tee $8 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $8 + local.get $2 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $1 + local.get $5 i32.store local.get $0 - local.get $1 + local.get $6 i32.store offset=4 - local.get $3 - local.get $3 + local.get $14 + local.get $14 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $14 i32.load - local.get $3 - i32.load offset=4 local.get $14 + i32.load offset=4 + local.get $8 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -14729,21 +14799,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $15 + local.get $16 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|2 end end - local.get $3 + local.get $14 i32.load offset=20 i32.const 100 i32.ne @@ -14755,7 +14825,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $15 i32.load offset=20 i32.const 100 i32.ne @@ -14768,9 +14838,9 @@ unreachable end i32.const 0 - local.set $5 + local.set $0 loop $for-loop|3 - local.get $5 + local.get $0 i32.const 50 i32.lt_u if @@ -14778,7 +14848,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14787,36 +14857,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find19 - loop $while-continue|020 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -14824,23 +14894,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find19 + br_if $__inlined_func$~lib/map/Map#find21 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|020 + local.set $5 + br $while-continue|022 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 i32.eqz if i32.const 0 @@ -14851,9 +14921,9 @@ unreachable end local.get $4 - local.get $5 + local.get $0 call $~lib/map/Map#get - local.get $5 + local.get $0 i32.const 20 i32.add i32.ne @@ -14866,13 +14936,13 @@ unreachable end local.get $4 - local.get $5 + local.get $0 call $~lib/map/Map#delete local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14881,36 +14951,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find22 - loop $while-continue|023 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -14918,23 +14988,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find22 + br_if $__inlined_func$~lib/map/Map#find24 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|023 + local.set $5 + br $while-continue|025 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 if i32.const 0 i32.const 1568 @@ -14943,10 +15013,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|3 end end @@ -14963,9 +15033,9 @@ unreachable end i32.const 0 - local.set $5 + local.set $0 loop $for-loop|4 - local.get $5 + local.get $0 i32.const 50 i32.lt_u if @@ -14973,7 +15043,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -14982,36 +15052,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find25 - loop $while-continue|026 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -15019,23 +15089,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find25 + br_if $__inlined_func$~lib/map/Map#find27 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|026 + local.set $5 + br $while-continue|028 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 if i32.const 0 i32.const 1568 @@ -15045,8 +15115,8 @@ unreachable end local.get $4 - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 10 i32.add call $~lib/map/Map#set @@ -15054,7 +15124,7 @@ i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15063,36 +15133,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find28 - loop $while-continue|029 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -15100,23 +15170,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find28 + br_if $__inlined_func$~lib/map/Map#find30 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|029 + local.set $5 + br $while-continue|031 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 i32.eqz if i32.const 0 @@ -15127,13 +15197,13 @@ unreachable end local.get $4 - local.get $5 + local.get $0 call $~lib/map/Map#delete local.get $4 i32.load local.get $4 i32.load offset=4 - local.get $5 + local.get $0 i32.const -1028477379 i32.mul i32.const 374761397 @@ -15142,36 +15212,36 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.tee $0 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find31 - loop $while-continue|032 - local.get $0 + local.set $5 + block $__inlined_func$~lib/map/Map#find33 + loop $while-continue|034 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=8 local.tee $1 i32.const 1 @@ -15179,23 +15249,23 @@ if (result i32) i32.const 0 else - local.get $5 local.get $0 + local.get $5 i32.load i32.eq end - br_if $__inlined_func$~lib/map/Map#find31 + br_if $__inlined_func$~lib/map/Map#find33 local.get $1 i32.const -2 i32.and - local.set $0 - br $while-continue|032 + local.set $5 + br $while-continue|034 end end i32.const 0 - local.set $0 + local.set $5 end - local.get $0 + local.get $5 if i32.const 0 i32.const 1568 @@ -15204,10 +15274,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|4 end end @@ -15250,60 +15320,61 @@ ) (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=12 local.tee $2 @@ -15318,6 +15389,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -15326,9 +15398,7 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) @@ -15368,7 +15438,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -15376,7 +15446,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -15384,37 +15454,36 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $4 + local.set $8 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $8 i32.ne if - local.get $8 + local.get $5 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $5 i64.load local.tee $6 i64.store local.get $2 - local.get $8 + local.get $5 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $1 local.get $6 i32.wrap_i64 i32.const -1028477379 @@ -15437,28 +15506,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add local.tee $9 i32.load @@ -15471,30 +15541,36 @@ i32.add local.set $2 end - local.get $8 + local.get $5 i32.const 16 i32.add - local.set $8 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $4 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -15507,60 +15583,61 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=12 local.tee $2 @@ -15575,6 +15652,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -15583,9 +15661,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -15616,84 +15693,85 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 i32.shl i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find + local.get $2 + i64.store + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=12 local.tee $3 @@ -15708,6 +15786,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -15716,9 +15795,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -15739,14 +15817,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -15766,7 +15844,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -15777,9 +15855,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -15788,9 +15869,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -15805,8 +15889,8 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -15816,89 +15900,95 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i64) + (local $14 i32) (local $15 i32) - (local $16 i32) + (local $16 i64) (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i64.const 0 i64.store offset=8 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 i32.const 24 i32.const 20 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $9 i32.store - local.get $5 + local.get $9 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $4 i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $4 + if + local.get $9 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 3 i32.store offset=4 - local.get $5 + local.get $9 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $4 + if + local.get $9 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 4 i32.store offset=12 - local.get $5 + local.get $9 i32.const 0 i32.store offset=16 - local.get $5 + local.get $9 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $5 + local.get $1 + local.get $9 i32.store loop $for-loop|0 - local.get $4 + local.get $3 i64.const 100 i64.lt_s if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -15908,15 +15998,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -15927,10 +16017,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -15943,14 +16033,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -15963,14 +16053,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|1 - local.get $4 + local.get $3 i64.const 100 i64.lt_s if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -15981,10 +16071,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -15997,15 +16087,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16016,10 +16106,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -16032,14 +16122,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|1 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -16052,60 +16142,57 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $9 i32.load offset=8 - local.set $12 - local.get $5 + local.set $7 + local.get $9 i32.load offset=16 - local.tee $13 - local.set $3 - local.get $7 + local.tee $8 + local.set $10 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 16 i32.const 21 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $1 i32.const 0 i32.store offset=4 - local.get $6 + local.get $1 i32.const 0 i32.store offset=8 - local.get $6 + local.get $1 i32.const 0 i32.store offset=12 - local.get $3 + local.get $10 i32.const 134217727 i32.gt_u if @@ -16117,69 +16204,72 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.const 8 - local.get $3 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $12 i32.store offset=4 - local.get $0 - local.get $9 + local.get $12 + local.get $11 call $~lib/memory/memory.fill - local.get $6 - local.get $0 - i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $0 + local.get $1 + local.get $12 + i32.store + local.get $12 + if + local.get $1 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $1 + local.get $11 i32.store offset=8 - local.get $6 - local.get $3 + local.get $1 + local.get $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $6 + local.get $1 i32.store loop $for-loop|01 local.get $2 - local.get $13 + local.get $8 i32.lt_s if local.get $2 i32.const 4 i32.shl - local.get $12 + local.get $7 i32.add - local.tee $3 + local.tee $6 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $6 local.get $1 - local.get $3 + local.get $0 + local.get $6 i64.load call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 1 @@ -16188,24 +16278,24 @@ br $for-loop|01 end end - local.get $6 local.get $1 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 local.get $1 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 call $~lib/map/Map#values - local.tee $13 + local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16215,64 +16305,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.const 22 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $11 i32.store - local.get $3 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $3 + local.get $11 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=8 - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $3 + local.get $11 i32.const 0 i32.store offset=16 - local.get $3 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $12 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $1 i32.load offset=12 - local.get $10 + local.get $5 i32.gt_s if - local.get $6 + local.get $1 i32.load offset=12 - local.get $10 + local.get $5 i32.le_u if i32.const 1248 @@ -16282,20 +16378,20 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 i32.load offset=4 - local.get $10 + local.get $5 i32.const 3 i32.shl i32.add i64.load - local.set $4 - local.get $13 + local.set $3 local.get $10 - call $~lib/array/Array#__get - local.set $12 local.get $5 - local.get $4 + call $~lib/array/Array#__get + local.set $13 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16306,8 +16402,8 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $12 + local.get $9 + local.get $13 i32.const 20 i32.sub i64.extend_i32_s @@ -16328,13 +16424,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $11 i32.load - local.get $4 + local.get $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16344,7 +16440,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16356,26 +16452,26 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $15 - local.get $3 + local.tee $14 + local.get $11 i32.load offset=4 i32.and i32.const 2 @@ -16395,7 +16491,7 @@ if (result i32) i32.const 0 else - local.get $4 + local.get $3 local.get $0 i64.load i64.eq @@ -16414,18 +16510,18 @@ local.get $0 if local.get $0 - local.get $4 + local.get $3 i64.store offset=8 else - local.get $3 + local.get $11 i32.load offset=16 - local.get $3 + local.get $11 i32.load offset=12 i32.eq if - local.get $3 + local.get $11 i32.load offset=20 - local.get $3 + local.get $11 i32.load offset=12 i32.const 3 i32.mul @@ -16433,17 +16529,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $11 i32.load offset=4 else - local.get $3 + local.get $11 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $1 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -16451,20 +16547,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $1 + local.get $15 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -16472,46 +16568,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $7 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $3 + local.get $11 i32.load offset=8 - local.tee $7 - local.get $3 + local.tee $4 + local.get $11 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 + local.set $8 local.get $2 local.set $0 - loop $while-continue|00 - local.get $7 - local.get $17 + loop $while-continue|02 + local.get $4 + local.get $8 i32.ne if - local.get $7 + local.get $4 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $4 i64.load - local.tee $14 + local.tee $16 i64.store local.get $0 - local.get $7 + local.get $4 i64.load offset=8 i64.store offset=8 local.get $0 - local.get $1 - local.get $14 + local.get $16 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16521,7 +16616,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $16 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16532,34 +16627,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $8 i32.xor + local.get $15 i32.and i32.const 2 i32.shl - local.get $9 + local.get $6 i32.add - local.tee $8 + local.tee $17 i32.load i32.store offset=16 - local.get $8 + local.get $17 local.get $0 i32.store local.get $0 @@ -16567,33 +16663,39 @@ i32.add local.set $0 end - local.get $7 + local.get $4 i32.const 24 i32.add - local.set $7 - br $while-continue|00 + local.set $4 + br $while-continue|02 end end - local.get $3 - local.get $9 + local.get $11 + local.get $6 i32.store - local.get $3 - local.get $9 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 + local.get $6 + if + local.get $11 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $15 i32.store offset=4 - local.get $3 + local.get $11 local.get $2 i32.store offset=8 - local.get $3 local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $16 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $7 i32.store offset=12 - local.get $3 - local.get $3 + local.get $11 + local.get $11 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -16602,48 +16704,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $11 + local.get $11 i32.load offset=16 - local.tee $1 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $1 + local.get $2 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $4 + local.get $3 i64.store local.get $0 - local.get $4 - i64.store offset=8 - local.get $3 local.get $3 + i64.store offset=8 + local.get $11 + local.get $11 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 - local.get $15 + local.get $14 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=16 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -16651,21 +16753,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 local.get $12 + local.get $13 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $5 i32.const 1 i32.add - local.set $10 + local.set $5 br $for-loop|2 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -16677,7 +16779,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -16690,14 +16792,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|3 - local.get $4 + local.get $3 i64.const 50 i64.lt_s if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16708,10 +16810,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -16724,11 +16826,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#delete - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16738,14 +16840,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|3 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -16758,14 +16860,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|4 - local.get $4 + local.get $3 i64.const 50 i64.lt_s if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16775,15 +16877,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16794,11 +16896,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#delete - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16808,14 +16910,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|4 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -16827,9 +16929,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $9 call $~lib/map/Map#clear - local.get $5 + local.get $9 i32.load offset=20 if i32.const 0 @@ -16854,60 +16956,61 @@ ) (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=12 local.tee $2 @@ -16922,6 +17025,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -16930,9 +17034,7 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) @@ -16972,7 +17074,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -16980,7 +17082,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -16988,37 +17090,36 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $4 + local.set $8 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 + local.get $5 local.get $8 i32.ne if - local.get $8 + local.get $5 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $5 i64.load local.tee $6 i64.store local.get $2 - local.get $8 + local.get $5 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $1 local.get $6 i32.wrap_i64 i32.const -1028477379 @@ -17041,28 +17142,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add local.tee $9 i32.load @@ -17075,30 +17177,36 @@ i32.add local.set $2 end - local.get $8 + local.get $5 i32.const 16 i32.add - local.set $8 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $4 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -17111,60 +17219,61 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=12 local.tee $2 @@ -17179,6 +17288,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -17187,9 +17297,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -17205,60 +17314,61 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=12 local.tee $3 @@ -17273,6 +17383,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -17281,9 +17392,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -17304,14 +17414,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -17331,7 +17441,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -17339,8 +17449,8 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -17350,89 +17460,95 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i64) + (local $14 i32) (local $15 i32) - (local $16 i32) + (local $16 i64) (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i64.const 0 i64.store - local.get $3 + local.get $1 i64.const 0 i64.store offset=8 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store - local.get $5 + local.get $4 i32.const 24 i32.const 23 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $9 i32.store - local.get $5 + local.get $9 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $4 i32.store - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $4 + if + local.get $9 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 3 i32.store offset=4 - local.get $5 + local.get $9 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $4 i32.store offset=8 - local.get $5 - local.get $0 - call $~lib/rt/itcms/__link - local.get $5 + local.get $4 + if + local.get $9 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 4 i32.store offset=12 - local.get $5 + local.get $9 i32.const 0 i32.store offset=16 - local.get $5 + local.get $9 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $5 + local.get $1 + local.get $9 i32.store loop $for-loop|0 - local.get $4 + local.get $3 i64.const 100 i64.lt_u if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -17442,15 +17558,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17461,10 +17577,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -17477,14 +17593,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -17497,14 +17613,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|1 - local.get $4 + local.get $3 i64.const 100 i64.lt_u if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17515,10 +17631,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -17531,15 +17647,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17550,10 +17666,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -17566,14 +17682,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|1 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -17586,60 +17702,57 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $9 i32.load offset=8 - local.set $12 - local.get $5 + local.set $7 + local.get $9 i32.load offset=16 - local.tee $13 - local.set $3 - local.get $7 + local.tee $8 + local.set $10 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 16 i32.const 24 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $1 i32.const 0 i32.store offset=4 - local.get $6 + local.get $1 i32.const 0 i32.store offset=8 - local.get $6 + local.get $1 i32.const 0 i32.store offset=12 - local.get $3 + local.get $10 i32.const 134217727 i32.gt_u if @@ -17651,69 +17764,72 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.const 8 - local.get $3 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $12 i32.store offset=4 - local.get $0 - local.get $9 + local.get $12 + local.get $11 call $~lib/memory/memory.fill - local.get $6 - local.get $0 + local.get $1 + local.get $12 i32.store - local.get $6 - local.get $0 - call $~lib/rt/itcms/__link - local.get $6 - local.get $0 + local.get $12 + if + local.get $1 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $1 + local.get $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $1 + local.get $11 i32.store offset=8 - local.get $6 - local.get $3 + local.get $1 + local.get $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 local.get $6 + local.get $1 i32.store loop $for-loop|01 local.get $2 - local.get $13 + local.get $8 i32.lt_s if local.get $2 i32.const 4 i32.shl - local.get $12 + local.get $7 i32.add - local.tee $3 + local.tee $6 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $6 local.get $1 - local.get $3 + local.get $0 + local.get $6 i64.load call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 1 @@ -17722,24 +17838,24 @@ br $for-loop|01 end end - local.get $6 local.get $1 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 local.get $1 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 call $~lib/map/Map#values - local.tee $13 + local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17749,64 +17865,70 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.const 25 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $11 i32.store - local.get $3 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $3 + local.get $11 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $2 i32.store offset=8 - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $3 + local.get $11 i32.const 0 i32.store offset=16 - local.get $3 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $12 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $1 i32.load offset=12 - local.get $10 + local.get $5 i32.gt_s if - local.get $6 + local.get $1 i32.load offset=12 - local.get $10 + local.get $5 i32.le_u if i32.const 1248 @@ -17816,20 +17938,20 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 i32.load offset=4 - local.get $10 + local.get $5 i32.const 3 i32.shl i32.add i64.load - local.set $4 - local.get $13 + local.set $3 local.get $10 - call $~lib/array/Array#__get - local.set $12 local.get $5 - local.get $4 + call $~lib/array/Array#__get + local.set $13 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17840,8 +17962,8 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $12 + local.get $9 + local.get $13 i32.const 20 i32.sub i64.extend_i32_s @@ -17862,13 +17984,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $3 + local.get $11 i32.load - local.get $4 + local.get $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -17878,7 +18000,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -17890,26 +18012,26 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $15 - local.get $3 + local.tee $14 + local.get $11 i32.load offset=4 i32.and i32.const 2 @@ -17929,7 +18051,7 @@ if (result i32) i32.const 0 else - local.get $4 + local.get $3 local.get $0 i64.load i64.eq @@ -17948,18 +18070,18 @@ local.get $0 if local.get $0 - local.get $4 + local.get $3 i64.store offset=8 else - local.get $3 + local.get $11 i32.load offset=16 - local.get $3 + local.get $11 i32.load offset=12 i32.eq if - local.get $3 + local.get $11 i32.load offset=20 - local.get $3 + local.get $11 i32.load offset=12 i32.const 3 i32.mul @@ -17967,17 +18089,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $11 i32.load offset=4 else - local.get $3 + local.get $11 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $1 + local.set $15 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -17985,20 +18107,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $1 + local.get $15 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -18006,46 +18128,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $7 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $3 + local.get $11 i32.load offset=8 - local.tee $7 - local.get $3 + local.tee $4 + local.get $11 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 + local.set $8 local.get $2 local.set $0 - loop $while-continue|00 - local.get $7 - local.get $17 + loop $while-continue|02 + local.get $4 + local.get $8 i32.ne if - local.get $7 + local.get $4 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $4 i64.load - local.tee $14 + local.tee $16 i64.store local.get $0 - local.get $7 + local.get $4 i64.load offset=8 i64.store offset=8 local.get $0 - local.get $1 - local.get $14 + local.get $16 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -18055,7 +18176,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $16 i64.const 32 i64.shr_u i32.wrap_i64 @@ -18066,34 +18187,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $8 i32.xor + local.get $15 i32.and i32.const 2 i32.shl - local.get $9 + local.get $6 i32.add - local.tee $8 + local.tee $17 i32.load i32.store offset=16 - local.get $8 + local.get $17 local.get $0 i32.store local.get $0 @@ -18101,33 +18223,39 @@ i32.add local.set $0 end - local.get $7 + local.get $4 i32.const 24 i32.add - local.set $7 - br $while-continue|00 + local.set $4 + br $while-continue|02 end end - local.get $3 - local.get $9 + local.get $11 + local.get $6 i32.store - local.get $3 - local.get $9 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 + local.get $6 + if + local.get $11 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $15 i32.store offset=4 - local.get $3 + local.get $11 local.get $2 i32.store offset=8 - local.get $3 local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $16 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $7 i32.store offset=12 - local.get $3 - local.get $3 + local.get $11 + local.get $11 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -18136,48 +18264,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.load offset=8 local.tee $0 i32.store - local.get $3 - local.get $3 + local.get $11 + local.get $11 i32.load offset=16 - local.tee $1 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $1 + local.get $2 i32.const 24 i32.mul local.get $0 i32.add local.tee $0 - local.get $4 + local.get $3 i64.store local.get $0 - local.get $4 - i64.store offset=8 - local.get $3 local.get $3 + i64.store offset=8 + local.get $11 + local.get $11 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $3 + local.get $11 i32.load - local.get $3 + local.get $11 i32.load offset=4 - local.get $15 + local.get $14 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $2 i32.load i32.store offset=16 - local.get $1 + local.get $2 local.get $0 i32.store end @@ -18185,21 +18313,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 local.get $12 + local.get $13 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $5 i32.const 1 i32.add - local.set $10 + local.set $5 br $for-loop|2 end end - local.get $3 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -18211,7 +18339,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -18224,14 +18352,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|3 - local.get $4 + local.get $3 i64.const 50 i64.lt_u if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -18242,10 +18370,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#get - local.get $4 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -18258,11 +18386,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#delete - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18272,14 +18400,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|3 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -18292,14 +18420,14 @@ unreachable end i64.const 0 - local.set $4 + local.set $3 loop $for-loop|4 - local.get $4 + local.get $3 i64.const 50 i64.lt_u if - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18309,15 +18437,15 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 - local.get $4 + local.get $9 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -18328,11 +18456,11 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#delete - local.get $5 - local.get $4 + local.get $9 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18342,14 +18470,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i64.const 1 i64.add - local.set $4 + local.set $3 br $for-loop|4 end end - local.get $5 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -18361,9 +18489,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $9 call $~lib/map/Map#clear - local.get $5 + local.get $9 i32.load offset=20 if i32.const 0 @@ -18389,11 +18517,11 @@ (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f32) (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -18422,7 +18550,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -18438,37 +18566,37 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $0 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $5 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 local.get $5 - local.get $8 + local.get $7 i32.ne if - local.get $8 + local.get $5 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $5 f32.load - local.tee $4 + local.tee $8 f32.store local.get $2 - local.get $8 + local.get $5 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $4 + local.get $8 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18479,29 +18607,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $4 i32.add local.tee $9 i32.load @@ -18514,28 +18642,34 @@ i32.add local.set $2 end - local.get $8 + local.get $5 i32.const 12 i32.add - local.set $8 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $4 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $6 i32.store offset=12 @@ -18550,49 +18684,50 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 f32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -18607,6 +18742,7 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -18615,9 +18751,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1616 @@ -18633,49 +18768,50 @@ (func $~lib/map/Map#delete (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -18690,6 +18826,7 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -18698,9 +18835,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -18721,14 +18857,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -18748,7 +18884,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -18756,9 +18892,9 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) + (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 f32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -18766,8 +18902,8 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 f32) + (local $13 f32) + (local $14 i32) (local $15 i32) (local $16 i32) (local $17 i32) @@ -18775,84 +18911,90 @@ i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i64.const 0 i64.store offset=8 - local.get $1 + local.get $3 i32.const 0 i32.store offset=16 - local.get $1 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $2 i32.const 0 i32.store - local.get $5 + local.get $2 i32.const 24 i32.const 26 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $4 i32.store local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $2 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 i32.const 3 i32.store offset=4 - local.get $4 + local.get $2 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $4 i32.store offset=8 local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $2 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 i32.const 4 i32.store offset=12 - local.get $4 + local.get $2 i32.const 0 i32.store offset=16 - local.get $4 + local.get $2 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $4 + local.get $3 + local.get $2 i32.store loop $for-loop|0 - local.get $3 + local.get $5 f32.const 100 f32.lt if - local.get $4 + local.get $2 i32.load - local.get $4 + local.get $2 i32.load offset=4 - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18862,60 +19004,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $4 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $4 if - local.get $1 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $4 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 if i32.const 0 i32.const 1568 @@ -18924,18 +19066,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + local.get $2 + local.get $5 + local.get $5 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $2 i32.load - local.get $4 + local.get $2 i32.load offset=4 - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -18945,60 +19087,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $4 block $__inlined_func$~lib/map/Map#find1 loop $while-continue|02 - local.get $1 + local.get $4 if - local.get $1 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $4 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find1 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 i32.eqz if i32.const 0 @@ -19008,10 +19150,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $5 call $~lib/map/Map#get - local.get $3 + local.get $5 i32.trunc_f32_s i32.const 10 i32.add @@ -19024,14 +19166,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 f32.const 1 f32.add - local.set $3 + local.set $5 br $for-loop|0 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -19044,17 +19186,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $5 loop $for-loop|1 - local.get $3 + local.get $5 f32.const 100 f32.lt if - local.get $4 + local.get $2 i32.load - local.get $4 + local.get $2 i32.load offset=4 - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19064,60 +19206,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $4 block $__inlined_func$~lib/map/Map#find4 loop $while-continue|05 - local.get $1 + local.get $4 if - local.get $1 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $4 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find4 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 i32.eqz if i32.const 0 @@ -19127,10 +19269,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $5 call $~lib/map/Map#get - local.get $3 + local.get $5 i32.trunc_f32_s i32.const 10 i32.add @@ -19143,18 +19285,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 - local.get $3 + local.get $2 + local.get $5 + local.get $5 i32.trunc_f32_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $4 + local.get $2 i32.load - local.get $4 + local.get $2 i32.load offset=4 - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19164,60 +19306,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $4 block $__inlined_func$~lib/map/Map#find7 loop $while-continue|08 - local.get $1 + local.get $4 if - local.get $1 + local.get $4 i32.load offset=8 - local.tee $6 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $4 f32.load f32.eq end br_if $__inlined_func$~lib/map/Map#find7 - local.get $6 + local.get $3 i32.const -2 i32.and - local.set $1 + local.set $4 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $4 end - local.get $1 + local.get $4 i32.eqz if i32.const 0 @@ -19227,10 +19369,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $2 + local.get $5 call $~lib/map/Map#get - local.get $3 + local.get $5 i32.trunc_f32_s i32.const 20 i32.add @@ -19243,14 +19385,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 f32.const 1 f32.add - local.set $3 + local.set $5 br $for-loop|1 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -19263,26 +19405,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $7 i32.const 0 i32.store - local.get $4 + local.get $2 + local.tee $3 i32.load offset=8 - local.set $12 - local.get $4 + local.set $8 + local.get $2 i32.load offset=16 - local.tee $13 - local.set $1 + local.tee $9 + local.set $2 local.get $7 i32.const 8 i32.sub @@ -19290,33 +19433,30 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $10 i64.const 0 i64.store - local.get $5 + local.get $10 i32.const 16 i32.const 27 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $10 i32.store - local.get $6 + local.get $10 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $10 i32.const 0 i32.store offset=4 - local.get $6 + local.get $10 i32.const 0 i32.store offset=8 - local.get $6 + local.get $10 i32.const 0 i32.store offset=12 - local.get $1 + local.get $2 i32.const 268435455 i32.gt_u if @@ -19328,74 +19468,77 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 8 - local.get $1 + local.get $2 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $9 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $12 i32.store offset=4 - local.get $5 - local.get $9 + local.get $12 + local.get $11 call $~lib/memory/memory.fill - local.get $6 - local.get $5 + local.get $10 + local.get $12 i32.store - local.get $6 - local.get $5 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 + local.get $12 + if + local.get $10 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $10 + local.get $11 i32.store offset=8 - local.get $6 - local.get $1 + local.get $10 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $7 - local.get $6 + local.get $10 i32.store loop $for-loop|01 - local.get $2 - local.get $13 + local.get $6 + local.get $9 i32.lt_s if - local.get $2 + local.get $6 i32.const 12 i32.mul - local.get $12 + local.get $8 i32.add - local.tee $5 + local.tee $7 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $0 - local.tee $1 + local.get $1 + local.tee $2 i32.const 1 i32.add - local.set $0 - local.get $5 + local.set $1 + local.get $7 f32.load - local.set $3 - local.get $6 + local.set $5 + local.get $10 i32.load offset=12 - local.get $1 + local.get $2 i32.le_u if - local.get $1 + local.get $2 i32.const 0 i32.lt_s if @@ -19406,52 +19549,52 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $1 + local.get $10 + local.get $2 i32.const 1 i32.add - local.tee $5 + local.tee $7 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity - local.get $6 - local.get $5 + local.get $10 + local.get $7 i32.store offset=12 end - local.get $6 + local.get $10 i32.load offset=4 - local.get $1 + local.get $2 i32.const 2 i32.shl i32.add - local.get $3 + local.get $5 f32.store end - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|01 end end - local.get $6 - local.get $0 + local.get $10 + local.get $1 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 - local.get $0 + local.get $10 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 call $~lib/map/Map#values - local.tee $13 + local.tee $9 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19461,65 +19604,72 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.const 28 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $11 i32.store - local.get $1 + local.get $11 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $2 i32.store - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - local.get $1 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 3 i32.store offset=4 - local.get $1 + local.get $11 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $2 i32.store offset=8 - local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - local.get $1 + local.get $2 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 i32.const 4 i32.store offset=12 - local.get $1 + local.get $11 i32.const 0 i32.store offset=16 - local.get $1 + local.get $11 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $11 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $12 i32.store offset=16 loop $for-loop|2 - local.get $6 - i32.load offset=12 local.get $10 + i32.load offset=12 + local.get $0 i32.gt_s if - local.get $6 - i32.load offset=12 + local.get $0 + local.tee $1 local.get $10 - i32.le_u + i32.load offset=12 + i32.ge_u if i32.const 1248 i32.const 1728 @@ -19528,23 +19678,23 @@ call $~lib/builtins/abort unreachable end - local.get $6 - i32.load offset=4 local.get $10 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add f32.load - local.set $3 - local.get $13 - local.get $10 + local.set $5 + local.get $9 + local.get $1 call $~lib/array/Array#__get - local.set $12 - local.get $4 + local.set $7 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19555,59 +19705,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find10 - loop $while-continue|011 - local.get $0 + local.set $4 + block $__inlined_func$~lib/map/Map#find12 + loop $while-continue|013 + local.get $4 if - local.get $0 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $0 + local.get $5 + local.get $4 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find10 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find12 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|011 + local.set $4 + br $while-continue|013 end end i32.const 0 - local.set $0 + local.set $4 end - local.get $0 + local.get $4 i32.eqz if i32.const 0 @@ -19617,15 +19767,15 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 i32.load - local.get $4 + local.get $3 i32.load offset=4 - local.get $12 + local.get $7 i32.const 20 i32.sub f32.convert_i32_s - local.tee $14 + local.tee $13 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19636,59 +19786,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find13 - loop $while-continue|014 - local.get $0 + local.set $4 + block $__inlined_func$~lib/map/Map#find15 + loop $while-continue|016 + local.get $4 if - local.get $0 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $14 - local.get $0 + local.get $13 + local.get $4 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find13 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find15 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|014 + local.set $4 + br $while-continue|016 end end i32.const 0 - local.set $0 + local.set $4 end - local.get $0 + local.get $4 i32.eqz if i32.const 0 @@ -19705,13 +19855,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $11 i32.load - local.get $3 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19722,76 +19872,76 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $15 - local.get $1 + local.tee $14 + local.get $11 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find15 - loop $while-continue|016 - local.get $0 + local.set $4 + block $__inlined_func$~lib/map/Map#find17 + loop $while-continue|018 + local.get $4 if - local.get $0 + local.get $4 i32.load offset=8 - local.tee $2 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $0 + local.get $5 + local.get $4 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find15 - local.get $2 + br_if $__inlined_func$~lib/map/Map#find17 + local.get $0 i32.const -2 i32.and - local.set $0 - br $while-continue|016 + local.set $4 + br $while-continue|018 end end i32.const 0 - local.set $0 + local.set $4 end - local.get $0 + local.get $4 if - local.get $0 - local.get $3 + local.get $4 + local.get $5 f32.store offset=4 else - local.get $1 + local.get $11 i32.load offset=16 - local.get $1 + local.get $11 i32.load offset=12 i32.eq if - local.get $1 + local.get $11 i32.load offset=20 - local.get $1 + local.get $11 i32.load offset=12 i32.const 3 i32.mul @@ -19799,17 +19949,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $1 + local.get $11 i32.load offset=4 else - local.get $1 + local.get $11 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -19817,20 +19967,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -19838,45 +19988,45 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $15 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $2 i32.store offset=4 - local.get $1 + local.get $11 i32.load offset=8 - local.tee $7 - local.get $1 + local.tee $6 + local.get $11 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $17 + local.set $16 local.get $2 local.set $0 - loop $while-continue|017 - local.get $7 - local.get $17 + loop $while-continue|019 + local.get $6 + local.get $16 i32.ne if - local.get $7 + local.get $6 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $6 f32.load - local.tee $14 + local.tee $13 f32.store local.get $0 - local.get $7 + local.get $6 f32.load offset=4 f32.store offset=4 local.get $0 - local.get $14 + local.get $13 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -19886,35 +20036,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $17 + local.get $17 i32.const 16 i32.shr_u - local.get $8 i32.xor - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add - local.tee $8 + local.tee $17 i32.load i32.store offset=8 - local.get $8 + local.get $17 local.get $0 i32.store local.get $0 @@ -19922,33 +20072,39 @@ i32.add local.set $0 end - local.get $7 + local.get $6 i32.const 12 i32.add - local.set $7 - br $while-continue|017 + local.set $6 + br $while-continue|019 end end - local.get $1 - local.get $9 + local.get $11 + local.get $8 i32.store - local.get $1 - local.get $9 - call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $8 + if + local.get $11 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $4 i32.store offset=4 - local.get $1 + local.get $11 local.get $2 i32.store offset=8 - local.get $1 local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $16 + if + local.get $11 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $15 i32.store offset=12 - local.get $1 - local.get $1 + local.get $11 + local.get $11 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -19957,48 +20113,48 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $11 i32.load offset=8 local.tee $0 i32.store - local.get $1 - local.get $1 + local.get $11 + local.get $11 i32.load offset=16 - local.tee $5 + local.tee $2 i32.const 1 i32.add i32.store offset=16 - local.get $5 + local.get $2 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $3 + local.get $5 f32.store local.get $0 - local.get $3 + local.get $5 f32.store offset=4 - local.get $1 - local.get $1 + local.get $11 + local.get $11 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $1 + local.get $11 i32.load - local.get $1 + local.get $11 i32.load offset=4 - local.get $15 + local.get $14 i32.and i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $2 i32.load i32.store offset=8 - local.get $5 + local.get $2 local.get $0 i32.store end @@ -20006,21 +20162,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 local.get $12 + local.get $7 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $1 i32.const 1 i32.add - local.set $10 + local.set $0 br $for-loop|2 end end - local.get $1 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -20032,7 +20188,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -20045,17 +20201,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $5 loop $for-loop|3 - local.get $3 + local.get $5 f32.const 50 f32.lt if - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20065,60 +20221,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find19 - loop $while-continue|020 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find21 + loop $while-continue|022 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find19 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find21 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|020 + local.set $0 + br $while-continue|022 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -20128,10 +20284,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 + local.get $5 call $~lib/map/Map#get - local.get $3 + local.get $5 i32.trunc_f32_s i32.const 20 i32.add @@ -20144,14 +20300,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 + local.get $5 call $~lib/map/Map#delete - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20161,60 +20317,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find22 - loop $while-continue|023 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find24 + loop $while-continue|025 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find22 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find24 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|023 + local.set $0 + br $while-continue|025 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20223,14 +20379,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 f32.const 1 f32.add - local.set $3 + local.set $5 br $for-loop|3 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 50 i32.ne @@ -20243,17 +20399,17 @@ unreachable end f32.const 0 - local.set $3 + local.set $5 loop $for-loop|4 - local.get $3 + local.get $5 f32.const 50 f32.lt if - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20263,60 +20419,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find25 - loop $while-continue|026 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find27 + loop $while-continue|028 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find25 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find27 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|026 + local.set $0 + br $while-continue|028 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20325,18 +20481,18 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 local.get $3 + local.get $5 + local.get $5 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20346,60 +20502,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find28 - loop $while-continue|029 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find30 + loop $while-continue|031 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find28 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find30 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|029 + local.set $0 + br $while-continue|031 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -20409,14 +20565,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 local.get $3 + local.get $5 call $~lib/map/Map#delete - local.get $4 + local.get $3 i32.load - local.get $4 - i32.load offset=4 local.get $3 + i32.load offset=4 + local.get $5 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -20426,60 +20582,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find31 - loop $while-continue|032 - local.get $1 + local.set $0 + block $__inlined_func$~lib/map/Map#find33 + loop $while-continue|034 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=8 - local.tee $5 + local.tee $1 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 - local.get $1 + local.get $5 + local.get $0 f32.load f32.eq end - br_if $__inlined_func$~lib/map/Map#find31 - local.get $5 + br_if $__inlined_func$~lib/map/Map#find33 + local.get $1 i32.const -2 i32.and - local.set $1 - br $while-continue|032 + local.set $0 + br $while-continue|034 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -20488,14 +20644,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 f32.const 1 f32.add - local.set $3 + local.set $5 br $for-loop|4 end end - local.get $4 + local.get $3 i32.load offset=20 i32.const 50 i32.ne @@ -20507,9 +20663,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $3 call $~lib/map/Map#clear - local.get $4 + local.get $3 i32.load offset=20 if i32.const 0 @@ -20522,75 +20678,76 @@ global.get $~lib/memory/__stack_pointer i32.const 20 i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i32) + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=12 local.tee $3 @@ -20605,6 +20762,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -20613,21 +20771,19 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 f64) + (local $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $8 f64) + (local $9 i64) (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -20656,7 +20812,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -20664,7 +20820,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -20672,40 +20828,39 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $5 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $6 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $9 + local.get $5 + local.get $7 i32.ne if - local.get $9 + local.get $5 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $9 + local.get $5 f64.load - local.tee $5 + local.tee $8 f64.store local.get $2 - local.get $9 + local.get $5 i32.load offset=8 i32.store offset=8 local.get $2 - local.get $1 - local.get $5 + local.get $8 i64.reinterpret_f64 - local.tee $4 + local.tee $9 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -20715,7 +20870,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $9 i64.const 32 i64.shr_u i32.wrap_i64 @@ -20727,28 +20882,29 @@ i32.const 668265263 i32.mul local.tee $10 - local.get $10 i32.const 15 i32.shr_u + local.get $10 i32.xor i32.const -2048144777 i32.mul local.tee $10 - local.get $10 i32.const 13 i32.shr_u + local.get $10 i32.xor i32.const -1028477379 i32.mul local.tee $10 - local.get $10 i32.const 16 i32.shr_u + local.get $10 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $8 + local.get $4 i32.add local.tee $10 i32.load @@ -20761,30 +20917,36 @@ i32.add local.set $2 end - local.get $9 + local.get $5 i32.const 16 i32.add - local.set $9 + local.set $5 br $while-continue|0 end end local.get $0 - local.get $8 + local.get $4 i32.store - local.get $0 - local.get $8 - call $~lib/rt/itcms/__link + local.get $4 + if + local.get $0 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -20798,62 +20960,63 @@ (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=12 local.tee $3 @@ -20868,6 +21031,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $3 i32.const -2 i32.and @@ -20876,84 +21040,84 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz - if - i32.const 1616 - i32.const 1680 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) - (local $2 i32) - (local $3 i32) - (local $4 i64) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $4 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/map/Map#find + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i64) + (local $4 i32) + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -20965,7 +21129,8 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -20973,9 +21138,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -20996,14 +21160,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 4 i32.lt_u select @@ -21023,7 +21187,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/map/Map#rehash end ) @@ -21033,7 +21197,7 @@ (local $2 i32) (local $3 f64) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) @@ -21042,20 +21206,20 @@ (local $11 i32) (local $12 i32) (local $13 i32) - (local $14 i64) + (local $14 i32) (local $15 i32) (local $16 i32) - (local $17 i32) - (local $18 f64) + (local $17 f64) + (local $18 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -21073,43 +21237,49 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $6 i32.const 0 i32.store - local.get $5 + local.get $6 i32.const 24 i32.const 29 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $9 i32.store - local.get $4 + local.get $9 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $6 i32.store - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + local.get $6 + if + local.get $9 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 3 i32.store offset=4 - local.get $4 + local.get $9 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $6 i32.store offset=8 - local.get $4 - local.get $5 - call $~lib/rt/itcms/__link - local.get $4 + local.get $6 + if + local.get $9 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 i32.const 4 i32.store offset=12 - local.get $4 + local.get $9 i32.const 0 i32.store offset=16 - local.get $4 + local.get $9 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -21117,14 +21287,14 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $4 + local.get $9 i32.store loop $for-loop|0 local.get $3 f64.const 100 f64.lt if - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has if @@ -21135,14 +21305,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21154,7 +21324,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#get local.get $3 @@ -21177,7 +21347,7 @@ br $for-loop|0 end end - local.get $4 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -21196,7 +21366,7 @@ f64.const 100 f64.lt if - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21208,7 +21378,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#get local.get $3 @@ -21224,14 +21394,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 local.get $3 i32.trunc_f64_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21243,7 +21413,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#get local.get $3 @@ -21266,7 +21436,7 @@ br $for-loop|1 end end - local.get $4 + local.get $9 i32.load offset=20 i32.const 100 i32.ne @@ -21287,52 +21457,49 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store - local.get $4 + local.get $9 i32.load offset=8 - local.set $12 - local.get $4 + local.set $7 + local.get $9 i32.load offset=16 - local.tee $13 - local.set $1 - local.get $7 + local.tee $8 + local.set $10 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $11 i64.const 0 i64.store - local.get $5 + local.get $11 i32.const 16 i32.const 30 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $11 i32.store - local.get $6 + local.get $11 i32.const 0 i32.store - local.get $6 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $6 + local.get $11 i32.const 0 i32.store offset=4 - local.get $6 + local.get $11 i32.const 0 i32.store offset=8 - local.get $6 + local.get $11 i32.const 0 i32.store offset=12 - local.get $1 + local.get $10 i32.const 134217727 i32.gt_u if @@ -21344,55 +21511,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $10 i32.const 8 - local.get $1 + local.get $10 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $12 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $13 i32.store offset=4 - local.get $5 - local.get $9 + local.get $13 + local.get $12 call $~lib/memory/memory.fill - local.get $6 - local.get $5 + local.get $11 + local.get $13 i32.store - local.get $6 - local.get $5 - call $~lib/rt/itcms/__link - local.get $6 - local.get $5 + local.get $13 + if + local.get $11 + local.get $13 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $11 + local.get $13 i32.store offset=4 - local.get $6 - local.get $9 + local.get $11 + local.get $12 i32.store offset=8 - local.get $6 - local.get $1 + local.get $11 + local.get $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 - local.get $6 + local.get $1 + local.get $11 i32.store loop $for-loop|01 local.get $2 - local.get $13 + local.get $8 i32.lt_s if local.get $2 i32.const 4 i32.shl - local.get $12 + local.get $7 i32.add - local.tee $5 + local.tee $10 i32.load offset=12 i32.const 1 i32.and @@ -21403,10 +21573,10 @@ i32.const 1 i32.add local.set $0 - local.get $5 + local.get $10 f64.load local.set $3 - local.get $6 + local.get $11 i32.load offset=12 local.get $1 i32.le_u @@ -21422,19 +21592,19 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $11 local.get $1 i32.const 1 i32.add - local.tee $5 + local.tee $10 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $6 - local.get $5 + local.get $11 + local.get $10 i32.store offset=12 end - local.get $6 + local.get $11 i32.load offset=4 local.get $1 i32.const 3 @@ -21450,24 +21620,24 @@ br $for-loop|01 end end - local.get $6 + local.get $11 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $6 + local.get $11 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $11 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $9 call $~lib/map/Map#values - local.tee $13 + local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21477,7 +21647,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -21486,55 +21656,61 @@ i32.const 24 i32.const 31 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $12 i32.store - local.get $1 + local.get $12 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $1 i32.store local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - local.get $1 + if + local.get $12 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 3 i32.store offset=4 - local.get $1 + local.get $12 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $5 + local.tee $1 i32.store offset=8 local.get $1 - local.get $5 - call $~lib/rt/itcms/__link - local.get $1 + if + local.get $12 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 i32.const 4 i32.store offset=12 - local.get $1 + local.get $12 i32.const 0 i32.store offset=16 - local.get $1 + local.get $12 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $12 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $11 + local.tee $13 i32.store offset=16 loop $for-loop|2 - local.get $6 + local.get $11 i32.load offset=12 - local.get $10 + local.get $4 i32.gt_s if - local.get $6 + local.get $11 i32.load offset=12 - local.get $10 + local.get $4 i32.le_u if i32.const 1248 @@ -21544,19 +21720,19 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $11 i32.load offset=4 - local.get $10 + local.get $4 i32.const 3 i32.shl i32.add f64.load local.set $3 - local.get $13 local.get $10 - call $~lib/array/Array#__get - local.set $12 local.get $4 + call $~lib/array/Array#__get + local.set $14 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21568,8 +21744,8 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $12 + local.get $9 + local.get $14 i32.const 20 i32.sub f64.convert_i32_s @@ -21590,15 +21766,15 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $12 i32.load local.get $3 i64.reinterpret_f64 - local.tee $14 + local.tee $5 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21608,7 +21784,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21620,26 +21796,26 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor local.tee $15 - local.get $1 + local.get $12 i32.load offset=4 i32.and i32.const 2 @@ -21653,7 +21829,7 @@ if local.get $0 i32.load offset=16 - local.tee $2 + local.tee $1 i32.const 1 i32.and if (result i32) @@ -21665,7 +21841,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $1 i32.const -2 i32.and local.set $0 @@ -21681,15 +21857,15 @@ local.get $3 f64.store offset=8 else - local.get $1 + local.get $12 i32.load offset=16 - local.get $1 + local.get $12 i32.load offset=12 i32.eq if - local.get $1 + local.get $12 i32.load offset=20 - local.get $1 + local.get $12 i32.load offset=12 i32.const 3 i32.mul @@ -21697,17 +21873,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $1 + local.get $12 i32.load offset=4 else - local.get $1 + local.get $12 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $5 + local.set $16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -21715,20 +21891,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $5 + local.get $16 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $9 + local.tee $6 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -21736,48 +21912,47 @@ i32.shl i32.const 3 i32.div_s - local.tee $16 + local.tee $7 i32.const 24 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=4 - local.get $1 + local.get $12 i32.load offset=8 - local.tee $7 - local.get $1 + local.tee $2 + local.get $12 i32.load offset=16 i32.const 24 i32.mul i32.add - local.set $17 - local.get $2 + local.set $8 + local.get $1 local.set $0 - loop $while-continue|00 - local.get $7 - local.get $17 + loop $while-continue|02 + local.get $2 + local.get $8 i32.ne if - local.get $7 + local.get $2 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $7 + local.get $2 f64.load - local.tee $18 + local.tee $17 f64.store local.get $0 - local.get $7 + local.get $2 f64.load offset=8 f64.store offset=8 local.get $0 - local.get $5 - local.get $18 + local.get $17 i64.reinterpret_f64 - local.tee $14 + local.tee $5 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21787,7 +21962,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $14 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21798,34 +21973,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $8 + local.tee $18 + local.get $18 i32.const 15 i32.shr_u - local.get $8 i32.xor i32.const -2048144777 i32.mul - local.tee $8 + local.tee $18 + local.get $18 i32.const 13 i32.shr_u - local.get $8 i32.xor i32.const -1028477379 i32.mul - local.tee $8 + local.tee $18 + local.get $18 i32.const 16 i32.shr_u - local.get $8 i32.xor + local.get $16 i32.and i32.const 2 i32.shl - local.get $9 + local.get $6 i32.add - local.tee $8 + local.tee $18 i32.load i32.store offset=16 - local.get $8 + local.get $18 local.get $0 i32.store local.get $0 @@ -21833,33 +22009,39 @@ i32.add local.set $0 end - local.get $7 + local.get $2 i32.const 24 i32.add - local.set $7 - br $while-continue|00 + local.set $2 + br $while-continue|02 end end - local.get $1 - local.get $9 + local.get $12 + local.get $6 i32.store - local.get $1 - local.get $9 - call $~lib/rt/itcms/__link - local.get $1 - local.get $5 + local.get $6 + if + local.get $12 + local.get $6 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $16 i32.store offset=4 + local.get $12 local.get $1 - local.get $2 i32.store offset=8 local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $16 + if + local.get $12 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $12 + local.get $7 i32.store offset=12 - local.get $1 - local.get $1 + local.get $12 + local.get $12 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -21868,18 +22050,18 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $12 i32.load offset=8 local.tee $0 i32.store - local.get $1 - local.get $1 + local.get $12 + local.get $12 i32.load offset=16 - local.tee $5 + local.tee $1 i32.const 1 i32.add i32.store offset=16 - local.get $5 + local.get $1 i32.const 24 i32.mul local.get $0 @@ -21890,26 +22072,26 @@ local.get $0 local.get $3 f64.store offset=8 - local.get $1 - local.get $1 + local.get $12 + local.get $12 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $1 + local.get $12 i32.load - local.get $1 + local.get $12 i32.load offset=4 local.get $15 i32.and i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $1 i32.load i32.store offset=16 - local.get $5 + local.get $1 local.get $0 i32.store end @@ -21917,21 +22099,21 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 - local.get $12 + local.get $13 + local.get $14 i32.const 20 i32.sub local.tee $0 local.get $0 call $~lib/map/Map#set - local.get $10 + local.get $4 i32.const 1 i32.add - local.set $10 + local.set $4 br $for-loop|2 end end - local.get $1 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -21943,7 +22125,7 @@ call $~lib/builtins/abort unreachable end - local.get $11 + local.get $13 i32.load offset=20 i32.const 100 i32.ne @@ -21962,7 +22144,7 @@ f64.const 50 f64.lt if - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -21974,7 +22156,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#get local.get $3 @@ -21990,10 +22172,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#delete - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has if @@ -22011,7 +22193,7 @@ br $for-loop|3 end end - local.get $4 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -22030,7 +22212,7 @@ f64.const 50 f64.lt if - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has if @@ -22041,14 +22223,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has i32.eqz @@ -22060,10 +22242,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#delete - local.get $4 + local.get $9 local.get $3 call $~lib/map/Map#has if @@ -22081,7 +22263,7 @@ br $for-loop|4 end end - local.get $4 + local.get $9 i32.load offset=20 i32.const 50 i32.ne @@ -22093,9 +22275,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $9 call $~lib/map/Map#clear - local.get $4 + local.get $9 i32.load offset=20 if i32.const 0 @@ -22119,6 +22301,7 @@ unreachable ) (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) block $folding-inner1 block $folding-inner0 block $invalid @@ -22140,7 +22323,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -22148,15 +22331,27 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=8 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start memory.size @@ -22303,80 +22498,80 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load8_u local.get $3 + i32.load8_u + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -22412,24 +22607,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store8 + i32.add + local.tee $3 local.get $1 + i32.store8 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -22438,12 +22633,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -22452,7 +22647,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -22494,9 +22689,6 @@ i32.store local.get $1 i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 - i32.const 0 i32.store offset=4 local.get $1 i32.const 0 @@ -22524,25 +22716,28 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 local.get $3 + local.get $2 call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $3 i32.store + local.get $3 + if + local.get $1 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 + local.get $3 i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 local.get $1 local.get $0 @@ -22575,28 +22770,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 0 i32.store local.get $0 i32.load offset=8 - local.set $4 - local.get $2 + local.set $3 + local.get $4 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 call $~lib/array/Array#constructor local.tee $0 i32.store loop $for-loop|0 local.get $2 - local.get $3 - i32.gt_s + local.get $4 + i32.lt_s if - local.get $3 + local.get $2 i32.const 12 i32.mul - local.get $4 + local.get $3 i32.add local.tee $5 i32.load offset=8 @@ -22614,10 +22809,10 @@ i32.add local.set $1 end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -22668,9 +22863,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -22679,9 +22877,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -22719,77 +22920,77 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -22825,24 +23026,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store + i32.add + local.tee $3 local.get $1 + i32.store + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -22851,12 +23052,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -22865,7 +23066,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -22895,81 +23096,81 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load8_u local.get $3 + i32.load8_u + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23005,24 +23206,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store8 + i32.add + local.tee $3 local.get $1 + i32.store8 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23031,12 +23232,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23045,7 +23246,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23075,80 +23276,80 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load16_u local.get $3 + i32.load16_u + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23184,24 +23385,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store16 + i32.add + local.tee $3 local.get $1 + i32.store16 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23210,12 +23411,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23224,7 +23425,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23254,81 +23455,81 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 - i32.load16_u local.get $3 + i32.load16_u + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23364,24 +23565,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store16 + i32.add + local.tee $3 local.get $1 + i32.store16 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23390,12 +23591,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23404,7 +23605,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23423,88 +23624,88 @@ global.get $~lib/memory/__stack_pointer i32.const 2020 i32.lt_s - if - i32.const 18432 - i32.const 18480 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load - local.get $1 - local.tee $3 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/map/Map#find + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 + local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $3 local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $3 if - local.get $1 + local.get $3 local.get $2 i32.store offset=4 else @@ -23540,24 +23741,24 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.store local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul - local.get $1 - i32.add - local.tee $1 local.get $3 - i32.store + i32.add + local.tee $3 local.get $1 + i32.store + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -23566,12 +23767,12 @@ i32.const 1 i32.add i32.store offset=20 - local.get $1 + local.get $3 local.get $0 i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23580,7 +23781,7 @@ i32.load i32.store offset=8 local.get $0 - local.get $1 + local.get $3 i32.store end global.get $~lib/memory/__stack_pointer @@ -23610,64 +23811,65 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 local.get $3 if + local.get $3 local.get $3 i32.load offset=12 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23679,7 +23881,8 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and local.set $3 @@ -23687,9 +23890,8 @@ end end i32.const 0 - local.set $3 end - local.get $3 + local.tee $3 if local.get $3 local.get $2 @@ -23732,11 +23934,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 4 i32.shl local.get $3 @@ -23758,7 +23960,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -23797,28 +23999,28 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $4 i32.const 0 i32.store local.get $0 i32.load offset=8 - local.set $4 - local.get $2 + local.set $3 + local.get $4 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 call $~lib/array/Array#constructor local.tee $0 i32.store loop $for-loop|0 local.get $2 - local.get $3 - i32.gt_s + local.get $4 + i32.lt_s if - local.get $3 + local.get $2 i32.const 4 i32.shl - local.get $4 + local.get $3 i32.add local.tee $5 i32.load offset=12 @@ -23836,10 +24038,10 @@ i32.add local.set $1 end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -23879,64 +24081,65 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 local.get $3 if + local.get $3 local.get $3 i32.load offset=12 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -23948,7 +24151,8 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and local.set $3 @@ -23956,9 +24160,8 @@ end end i32.const 0 - local.set $3 end - local.get $3 + local.tee $3 if local.get $3 local.get $2 @@ -24001,11 +24204,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 4 i32.shl local.get $3 @@ -24027,7 +24230,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -24066,53 +24269,54 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 local.get $3 if + local.get $3 local.get $3 i32.load offset=8 - local.tee $4 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -24124,7 +24328,8 @@ f32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $5 i32.const -2 i32.and local.set $3 @@ -24132,9 +24337,8 @@ end end i32.const 0 - local.set $3 end - local.get $3 + local.tee $3 if local.get $3 local.get $2 @@ -24177,11 +24381,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $5 i32.const 12 i32.mul local.get $3 @@ -24203,7 +24407,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -24222,8 +24426,8 @@ ) (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24243,66 +24447,67 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 - i32.load - local.get $1 - i64.reinterpret_f64 - local.tee $5 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $3 - local.get $3 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $3 - local.get $3 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $3 - local.get $3 - i32.const 16 - i32.shr_u - i32.xor - local.tee $6 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $1 + i64.reinterpret_f64 + local.tee $4 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 loop $while-continue|0 local.get $3 if + local.get $3 local.get $3 i32.load offset=12 - local.tee $4 + local.tee $6 i32.const 1 i32.and if (result i32) @@ -24314,7 +24519,8 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $4 + drop + local.get $6 i32.const -2 i32.and local.set $3 @@ -24322,9 +24528,8 @@ end end i32.const 0 - local.set $3 end - local.get $3 + local.tee $3 if local.get $3 local.get $2 @@ -24367,11 +24572,11 @@ local.get $0 local.get $0 i32.load offset=16 - local.tee $4 + local.tee $6 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $6 i32.const 4 i32.shl local.get $3 @@ -24393,7 +24598,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $6 + local.get $5 i32.and i32.const 2 i32.shl @@ -24410,4 +24615,72 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index decb92239f..95bd63739f 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -1,11 +1,12 @@ (module (type $f64_=>_f64 (func (param f64) (result f64))) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) + (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) @@ -13,7 +14,6 @@ (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) (type $i64_=>_none (func (param i64))) (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) (type $f64_=>_none (func (param f64))) @@ -316,11 +316,10 @@ local.get $1 local.get $1 f64.ne - i32.const 0 local.get $0 local.get $0 f64.ne - select + i32.and br_if $__inlined_func$std/math/ulperr drop local.get $0 @@ -415,11 +414,10 @@ local.get $1 local.get $1 f32.ne - i32.const 0 local.get $0 local.get $0 f32.ne - select + i32.and br_if $__inlined_func$std/math/ulperrf drop local.get $0 @@ -563,32 +561,32 @@ i32.const 1 ) (func $~lib/math/NativeMath.acos (param $0 f64) (result f64) - (local $1 f64) + (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 f64) local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $3 + local.tee $2 i32.const 2147483647 i32.and - local.tee $2 + local.tee $1 i32.const 1072693248 i32.ge_u if local.get $0 i64.reinterpret_f64 i32.wrap_i64 - local.get $2 + local.get $1 i32.const 1072693248 i32.sub i32.or i32.eqz if - local.get $3 + local.get $2 i32.const 31 i32.shr_u if @@ -605,11 +603,11 @@ f64.div return end - local.get $2 + local.get $1 i32.const 1071644672 i32.lt_u if - local.get $2 + local.get $1 i32.const 1012924416 i32.le_u if @@ -670,7 +668,7 @@ f64.sub return end - local.get $3 + local.get $2 i32.const 31 i32.shr_u if @@ -682,7 +680,7 @@ f64.add local.tee $0 f64.sqrt - local.tee $1 + local.tee $3 local.get $0 local.get $0 local.get $0 @@ -724,7 +722,7 @@ f64.const 1 f64.add f64.div - local.get $1 + local.get $3 f64.mul f64.const 6.123233995736766e-17 f64.sub @@ -739,20 +737,20 @@ f64.const 0.5 f64.mul f64.sub - local.tee $0 + local.tee $3 f64.sqrt - local.tee $4 + local.tee $0 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $1 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.tee $4 + local.get $3 + local.get $3 + local.get $3 + local.get $3 + local.get $3 + local.get $3 f64.const 3.479331075960212e-05 f64.mul f64.const 7.915349942898145e-04 @@ -770,10 +768,10 @@ f64.const 0.16666666666666666 f64.add f64.mul - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.get $3 + local.get $3 + local.get $3 + local.get $3 f64.const 0.07703815055590194 f64.mul f64.const -0.6882839716054533 @@ -788,15 +786,15 @@ f64.const 1 f64.add f64.div - local.get $4 - f64.mul local.get $0 - local.get $1 - local.get $1 + f64.mul + local.get $3 + local.get $4 + local.get $4 f64.mul f64.sub + local.get $0 local.get $4 - local.get $1 f64.add f64.div f64.add @@ -805,25 +803,24 @@ f64.mul ) (func $~lib/math/NativeMathf.acos (param $0 f32) (result f32) - (local $1 f32) + (local $1 i32) (local $2 i32) (local $3 f32) - (local $4 i32) - (local $5 f32) + (local $4 f32) local.get $0 i32.reinterpret_f32 - local.tee $4 + local.tee $2 i32.const 2147483647 i32.and - local.tee $2 + local.tee $1 i32.const 1065353216 i32.ge_u if - local.get $2 + local.get $1 i32.const 1065353216 i32.eq if - local.get $4 + local.get $2 i32.const 31 i32.shr_u if @@ -840,11 +837,11 @@ f32.div return end - local.get $2 + local.get $1 i32.const 1056964608 i32.lt_u if - local.get $2 + local.get $1 i32.const 847249408 i32.le_u if @@ -881,7 +878,7 @@ f32.sub return end - local.get $4 + local.get $2 i32.const 31 i32.shr_u if @@ -893,7 +890,7 @@ f32.add local.tee $0 f32.sqrt - local.tee $1 + local.tee $3 local.get $0 local.get $0 local.get $0 @@ -911,7 +908,7 @@ f32.const 1 f32.add f32.div - local.get $1 + local.get $3 f32.mul f32.const 7.549789415861596e-08 f32.sub @@ -926,18 +923,17 @@ f32.const 0.5 f32.mul f32.sub - local.tee $1 + local.tee $3 f32.sqrt - local.tee $5 + local.tee $0 i32.reinterpret_f32 i32.const -4096 i32.and f32.reinterpret_i32 - local.tee $3 - local.get $1 - local.tee $0 - local.get $0 - local.get $0 + local.tee $4 + local.get $3 + local.get $3 + local.get $3 f32.const -0.008656363002955914 f32.mul f32.const -0.04274342209100723 @@ -946,21 +942,21 @@ f32.const 0.16666586697101593 f32.add f32.mul - local.get $0 + local.get $3 f32.const -0.7066296339035034 f32.mul f32.const 1 f32.add f32.div - local.get $5 - f32.mul local.get $0 + f32.mul local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.mul f32.sub - local.get $5 - local.get $3 + local.get $0 + local.get $4 f32.add f32.div f32.add @@ -971,28 +967,27 @@ (func $~lib/math/NativeMath.log1p (param $0 f64) (result f64) (local $1 f64) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 f64) - (local $5 i64) + (local $5 i32) (local $6 f64) (local $7 f64) i32.const 1 - local.set $3 - i32.const 1 + local.set $2 local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $5 i32.const 31 i32.shr_u - local.get $2 + local.get $5 i32.const 1071284858 i32.lt_u - select + i32.or if - local.get $2 + local.get $5 i32.const -1074790400 i32.ge_u if @@ -1012,7 +1007,7 @@ f64.div return end - local.get $2 + local.get $5 i32.const 1 i32.shl i32.const 2034237440 @@ -1021,19 +1016,19 @@ local.get $0 return end - local.get $2 + local.get $5 i32.const -1076707644 i32.le_u if (result f64) i32.const 0 - local.set $3 + local.set $2 local.get $0 else f64.const 0 end local.set $1 else - local.get $2 + local.get $5 i32.const 2146435072 i32.ge_u if @@ -1041,29 +1036,29 @@ return end end - local.get $3 + local.get $2 if local.get $0 f64.const 1 f64.add i64.reinterpret_f64 - local.tee $5 + local.tee $3 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 614242 i32.add - local.tee $2 + local.tee $5 i32.const 20 i32.shr_u i32.const 1023 i32.sub - local.tee $3 + local.tee $2 i32.const 54 i32.lt_s if (result f64) f64.const 1 - local.get $5 + local.get $3 f64.reinterpret_i64 local.tee $1 local.get $0 @@ -1074,7 +1069,7 @@ f64.const 1 f64.sub f64.sub - local.get $3 + local.get $2 i32.const 2 i32.ge_s select @@ -1083,11 +1078,11 @@ else f64.const 0 end - local.set $6 - local.get $5 + local.set $4 + local.get $3 i64.const 4294967295 i64.and - local.get $2 + local.get $5 i32.const 1048575 i32.and i32.const 1072079006 @@ -1106,20 +1101,20 @@ f64.const 2 f64.add f64.div - local.tee $4 - local.get $4 + local.tee $6 + local.get $6 f64.mul local.tee $7 local.get $7 f64.mul local.set $0 - local.get $4 + local.get $6 local.get $1 f64.const 0.5 f64.mul local.get $1 f64.mul - local.tee $4 + local.tee $6 local.get $7 local.get $0 local.get $0 @@ -1149,15 +1144,15 @@ f64.add f64.add f64.mul - local.get $3 + local.get $2 f64.convert_i32_s local.tee $0 f64.const 1.9082149292705877e-10 f64.mul - local.get $6 + local.get $4 f64.add f64.add - local.get $4 + local.get $6 f64.sub local.get $1 f64.add @@ -1168,11 +1163,11 @@ ) (func $~lib/math/NativeMath.log (param $0 f64) (result f64) (local $1 i64) - (local $2 f64) - (local $3 f64) - (local $4 i32) + (local $2 i32) + (local $3 i64) + (local $4 f64) (local $5 f64) - (local $6 i64) + (local $6 f64) (local $7 i32) block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 @@ -1189,40 +1184,40 @@ local.tee $0 local.get $0 f64.mul - local.tee $2 + local.tee $4 local.get $0 f64.mul - local.tee $3 + local.tee $5 local.get $0 f64.const -0.24999999999998432 f64.mul f64.const 0.3333333333333352 f64.add - local.get $2 + local.get $4 f64.const 0.19999999999320328 f64.mul f64.add - local.get $3 + local.get $5 local.get $0 f64.const 0.14285715076560868 f64.mul f64.const -0.16666666669929706 f64.add - local.get $2 + local.get $4 f64.const -0.12499997863982555 f64.mul f64.add - local.get $3 + local.get $5 local.get $0 f64.const -0.10000486757818193 f64.mul f64.const 0.11110712032936046 f64.add - local.get $2 + local.get $4 f64.const 0.09181994006195467 f64.mul f64.add - local.get $3 + local.get $5 f64.const -0.08328363062289341 f64.mul f64.add @@ -1237,33 +1232,33 @@ local.get $0 f64.const 134217728 f64.mul - local.tee $2 + local.tee $4 f64.add - local.get $2 + local.get $4 f64.sub - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 f64.mul f64.const -0.5 f64.mul local.tee $5 f64.add - local.tee $3 + local.tee $6 f64.sub local.get $5 f64.add local.get $0 - local.get $2 + local.get $4 f64.sub f64.const -0.5 f64.mul - local.get $2 + local.get $4 local.get $0 f64.add f64.mul f64.add f64.add - local.get $3 + local.get $6 f64.add br $~lib/util/math/log_lut|inlined.0 end @@ -1271,7 +1266,7 @@ i64.const 48 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.const 16 i32.sub i32.const 32736 @@ -1289,32 +1284,31 @@ br_if $~lib/util/math/log_lut|inlined.0 drop local.get $0 - local.tee $2 local.get $1 i64.const 9218868437227405312 i64.eq br_if $~lib/util/math/log_lut|inlined.0 drop i32.const 1 - local.get $4 + local.get $2 i32.const 32752 i32.and i32.const 32752 i32.eq - local.get $4 + local.get $2 i32.const 32768 i32.and select if - local.get $2 - local.get $2 + local.get $0 + local.get $0 f64.sub local.tee $0 local.get $0 f64.div br $~lib/util/math/log_lut|inlined.0 end - local.get $2 + local.get $0 f64.const 4503599627370496 f64.mul i64.reinterpret_f64 @@ -1325,7 +1319,7 @@ local.get $1 i64.const 4604367669032910848 i64.sub - local.tee $6 + local.tee $3 i64.const 45 i64.shr_u i64.const 127 @@ -1333,68 +1327,68 @@ i32.wrap_i64 i32.const 4 i32.shl - local.tee $4 + local.tee $2 i32.const 1088 i32.add local.set $7 - local.get $6 + local.get $3 i64.const 52 i64.shr_s f64.convert_i64_s - local.tee $3 + local.tee $0 f64.const 0.6931471805598903 f64.mul local.get $7 f64.load offset=8 f64.add - local.tee $2 + local.tee $4 local.get $1 - local.get $6 + local.get $3 i64.const -4503599627370496 i64.and i64.sub f64.reinterpret_i64 - local.get $4 + local.get $2 i32.const 3136 i32.add - local.tee $4 + local.tee $2 f64.load f64.sub - local.get $4 + local.get $2 f64.load offset=8 f64.sub local.get $7 f64.load f64.mul - local.tee $0 + local.tee $5 f64.add - local.set $5 - local.get $2 - local.get $5 + local.set $6 + local.get $4 + local.get $6 f64.sub - local.get $0 + local.get $5 f64.add - local.get $3 + local.get $0 f64.const 5.497923018708371e-14 f64.mul f64.add - local.get $0 - local.get $0 + local.get $5 + local.get $5 f64.mul - local.tee $2 + local.tee $0 f64.const -0.5000000000000001 f64.mul f64.add + local.get $5 local.get $0 - local.get $2 f64.mul - local.get $0 + local.get $5 f64.const -0.2499999999622955 f64.mul f64.const 0.33333333331825593 f64.add - local.get $2 local.get $0 + local.get $5 f64.const -0.16667054827627667 f64.mul f64.const 0.20000304511814496 @@ -1403,46 +1397,44 @@ f64.add f64.mul f64.add - local.get $5 + local.get $6 f64.add end ) (func $std/math/test_acosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i64) + (local $3 i64) + (local $4 f64) block $__inlined_func$~lib/math/NativeMath.acosh (result f64) local.get $0 - local.tee $3 + local.get $0 + f64.sub + f64.const 0 + f64.div + local.get $0 i64.reinterpret_f64 - local.tee $4 + local.tee $3 i64.const 4607182418800017408 i64.lt_s - if - local.get $3 - local.get $3 - f64.sub - f64.const 0 - f64.div - br $__inlined_func$~lib/math/NativeMath.acosh - end - local.get $4 + br_if $__inlined_func$~lib/math/NativeMath.acosh + drop + local.get $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $4 + local.tee $3 i64.const 1024 i64.lt_u if - local.get $3 + local.get $0 f64.const 1 f64.sub - local.tee $3 - local.get $3 - local.get $3 + local.tee $4 + local.get $4 + local.get $4 f64.mul - local.get $3 - local.get $3 + local.get $4 + local.get $4 f64.add f64.add f64.sqrt @@ -1450,17 +1442,17 @@ call $~lib/math/NativeMath.log1p br $__inlined_func$~lib/math/NativeMath.acosh end - local.get $4 + local.get $3 i64.const 1049 i64.lt_u if - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.add f64.const 1 - local.get $3 - local.get $3 - local.get $3 + local.get $0 + local.get $0 + local.get $0 f64.mul f64.const 1 f64.sub @@ -1471,7 +1463,7 @@ call $~lib/math/NativeMath.log br $__inlined_func$~lib/math/NativeMath.acosh end - local.get $3 + local.get $0 call $~lib/math/NativeMath.log f64.const 0.6931471805599453 f64.add @@ -1492,24 +1484,23 @@ (func $~lib/math/NativeMathf.log1p (param $0 f32) (result f32) (local $1 f32) (local $2 i32) - (local $3 i32) - (local $4 f32) + (local $3 f32) + (local $4 i32) (local $5 f32) (local $6 f32) i32.const 1 - local.set $3 - i32.const 1 + local.set $2 local.get $0 i32.reinterpret_f32 - local.tee $2 + local.tee $4 i32.const 31 i32.shr_u - local.get $2 + local.get $4 i32.const 1054086096 i32.lt_u - select + i32.or if - local.get $2 + local.get $4 i32.const -1082130432 i32.ge_u if @@ -1529,7 +1520,7 @@ f32.div return end - local.get $2 + local.get $4 i32.const 1 i32.shl i32.const 1728053248 @@ -1538,19 +1529,19 @@ local.get $0 return end - local.get $2 + local.get $4 i32.const -1097468391 i32.le_u if (result f32) i32.const 0 - local.set $3 + local.set $2 local.get $0 else f32.const 0 end local.set $1 else - local.get $2 + local.get $4 i32.const 2139095040 i32.ge_u if @@ -1558,7 +1549,7 @@ return end end - local.get $3 + local.get $2 if local.get $0 f32.const 1 @@ -1567,12 +1558,12 @@ i32.reinterpret_f32 i32.const 4913933 i32.add - local.tee $2 + local.tee $4 i32.const 23 i32.shr_u i32.const 127 i32.sub - local.tee $3 + local.tee $2 i32.const 25 i32.lt_s if (result f32) @@ -1586,7 +1577,7 @@ f32.const 1 f32.sub f32.sub - local.get $3 + local.get $2 i32.const 2 i32.ge_s select @@ -1595,8 +1586,8 @@ else f32.const 0 end - local.set $6 - local.get $2 + local.set $3 + local.get $4 i32.const 8388607 i32.and i32.const 1060439283 @@ -1611,29 +1602,29 @@ f32.const 2 f32.add f32.div + local.tee $5 + local.get $5 + f32.mul local.tee $0 local.get $0 f32.mul - local.tee $4 - local.get $4 - f32.mul - local.set $5 - local.get $0 + local.set $6 + local.get $5 local.get $1 f32.const 0.5 f32.mul local.get $1 f32.mul - local.tee $0 - local.get $4 - local.get $5 + local.tee $5 + local.get $0 + local.get $6 f32.const 0.2849878668785095 f32.mul f32.const 0.6666666269302368 f32.add f32.mul - local.get $5 - local.get $5 + local.get $6 + local.get $6 f32.const 0.24279078841209412 f32.mul f32.const 0.40000972151756287 @@ -1642,19 +1633,19 @@ f32.add f32.add f32.mul - local.get $3 + local.get $2 f32.convert_i32_s - local.tee $4 + local.tee $0 f32.const 9.05800061445916e-06 f32.mul - local.get $6 + local.get $3 f32.add f32.add - local.get $0 + local.get $5 f32.sub local.get $1 f32.add - local.get $4 + local.get $0 f32.const 0.6931381225585938 f32.mul f32.add @@ -1687,16 +1678,15 @@ i32.eq br_if $~lib/util/math/logf_lut|inlined.0 drop - i32.const 1 + local.get $1 + i32.const 31 + i32.shr_u local.get $1 i32.const 1 i32.shl i32.const -16777216 i32.ge_u - local.get $1 - i32.const 31 - i32.shr_u - select + i32.or if local.get $0 local.get $0 @@ -1825,26 +1815,26 @@ call $std/math/check ) (func $~lib/math/NativeMath.asin (param $0 f64) (result f64) - (local $1 f64) + (local $1 i32) (local $2 i32) (local $3 f64) - (local $4 i32) + (local $4 f64) local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.const 2147483647 i32.and - local.tee $2 + local.tee $1 i32.const 1072693248 i32.ge_u if local.get $0 i64.reinterpret_f64 i32.wrap_i64 - local.get $2 + local.get $1 i32.const 1072693248 i32.sub i32.or @@ -1864,18 +1854,17 @@ f64.div return end - local.get $2 + local.get $1 i32.const 1071644672 i32.lt_u if - local.get $2 - i32.const 1048576 - i32.ge_u - i32.const 0 - local.get $2 + local.get $1 i32.const 1045430272 i32.lt_u - select + local.get $1 + i32.const 1048576 + i32.ge_u + i32.and if local.get $0 return @@ -1936,15 +1925,15 @@ f64.const 0.5 f64.mul f64.sub - local.tee $0 + local.tee $4 f64.sqrt - local.set $1 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.set $0 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 f64.const 3.479331075960212e-05 f64.mul f64.const 7.915349942898145e-04 @@ -1962,10 +1951,10 @@ f64.const 0.16666666666666666 f64.add f64.mul - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.get $4 + local.get $4 + local.get $4 + local.get $4 f64.const 0.07703815055590194 f64.mul f64.const -0.6882839716054533 @@ -1981,13 +1970,13 @@ f64.add f64.div local.set $3 - local.get $2 + local.get $1 i32.const 1072640819 i32.ge_u if (result f64) f64.const 1.5707963267948966 - local.get $1 - local.get $1 + local.get $0 + local.get $0 local.get $3 f64.mul f64.add @@ -1998,24 +1987,24 @@ f64.sub else f64.const 0.7853981633974483 - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.add local.get $3 f64.mul f64.const 6.123233995736766e-17 + local.get $4 local.get $0 - local.get $1 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $0 - local.get $0 + local.tee $3 + local.get $3 f64.mul f64.sub - local.get $1 local.get $0 + local.get $3 f64.add f64.div f64.const 2 @@ -2023,15 +2012,15 @@ f64.sub f64.sub f64.const 0.7853981633974483 - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add f64.sub f64.sub f64.sub end local.set $0 - local.get $4 + local.get $2 i32.const 31 i32.shr_u if @@ -2075,14 +2064,13 @@ i32.const 1056964608 i32.lt_u if - local.get $1 - i32.const 8388608 - i32.ge_u - i32.const 0 local.get $1 i32.const 964689920 i32.lt_u - select + local.get $1 + i32.const 8388608 + i32.ge_u + i32.and if local.get $0 return @@ -2153,61 +2141,61 @@ f32.copysign ) (func $std/math/test_asinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) + (local $3 i64) (local $4 i64) - (local $5 i64) + (local $5 f64) local.get $0 i64.reinterpret_f64 - local.tee $5 + local.tee $4 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $4 - local.get $5 + local.set $3 + local.get $4 i64.const 9223372036854775807 i64.and f64.reinterpret_i64 - local.set $3 - local.get $4 + local.set $5 + local.get $3 i64.const 1049 i64.ge_u if (result f64) - local.get $3 + local.get $5 call $~lib/math/NativeMath.log f64.const 0.6931471805599453 f64.add else - local.get $4 + local.get $3 i64.const 1024 i64.ge_u if (result f64) - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.add f64.const 1 - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.mul f64.const 1 f64.add f64.sqrt - local.get $3 + local.get $5 f64.add f64.div f64.add call $~lib/math/NativeMath.log else - local.get $4 + local.get $3 i64.const 997 i64.ge_u if (result f64) - local.get $3 - local.get $3 - local.get $3 + local.get $5 + local.get $5 + local.get $5 f64.mul - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 f64.const 1 f64.add f64.sqrt @@ -2217,7 +2205,7 @@ f64.add call $~lib/math/NativeMath.log1p else - local.get $3 + local.get $5 end end end @@ -2237,54 +2225,54 @@ end ) (func $std/math/test_asinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) + (local $3 i32) + (local $4 f32) local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 f32.reinterpret_i32 - local.set $3 - local.get $4 + local.set $4 + local.get $3 i32.const 1166016512 i32.ge_u if (result f32) - local.get $3 + local.get $4 call $~lib/math/NativeMathf.log f32.const 0.6931471824645996 f32.add else - local.get $4 + local.get $3 i32.const 1073741824 i32.ge_u if (result f32) - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.add f32.const 1 - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.mul f32.const 1 f32.add f32.sqrt - local.get $3 + local.get $4 f32.add f32.div f32.add call $~lib/math/NativeMathf.log else - local.get $4 + local.get $3 i32.const 964689920 i32.ge_u if (result f32) - local.get $3 - local.get $3 - local.get $3 + local.get $4 + local.get $4 + local.get $4 f32.mul - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f32.const 1 f32.add f32.sqrt @@ -2294,7 +2282,7 @@ f32.add call $~lib/math/NativeMathf.log1p else - local.get $3 + local.get $4 end end end @@ -2306,9 +2294,9 @@ ) (func $~lib/math/NativeMath.atan (param $0 f64) (result f64) (local $1 f64) - (local $2 f64) + (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f64) (local $5 f64) local.get $0 local.set $1 @@ -2319,7 +2307,7 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $3 + local.tee $2 i32.const 1141899264 i32.ge_u if @@ -2335,11 +2323,11 @@ f64.copysign return end - local.get $3 + local.get $2 i32.const 1071382528 i32.lt_u if - local.get $3 + local.get $2 i32.const 1044381696 i32.lt_u if @@ -2347,16 +2335,16 @@ return end i32.const -1 - local.set $4 + local.set $3 else local.get $0 f64.abs local.set $0 - local.get $3 + local.get $2 i32.const 1072889856 i32.lt_u if (result f64) - local.get $3 + local.get $2 i32.const 1072037888 i32.lt_u if (result f64) @@ -2371,7 +2359,7 @@ f64.div else i32.const 1 - local.set $4 + local.set $3 local.get $0 f64.const 1 f64.sub @@ -2381,12 +2369,12 @@ f64.div end else - local.get $3 + local.get $2 i32.const 1073971200 i32.lt_u if (result f64) i32.const 2 - local.set $4 + local.set $3 local.get $0 f64.const 1.5 f64.sub @@ -2398,7 +2386,7 @@ f64.div else i32.const 3 - local.set $4 + local.set $3 f64.const -1 local.get $0 f64.div @@ -2412,14 +2400,14 @@ local.tee $5 local.get $5 f64.mul - local.set $2 + local.set $4 local.get $0 local.get $5 - local.get $2 - local.get $2 - local.get $2 - local.get $2 - local.get $2 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 f64.const 0.016285820115365782 f64.mul f64.const 0.049768779946159324 @@ -2437,11 +2425,11 @@ f64.const 0.3333333333333293 f64.add f64.mul - local.get $2 - local.get $2 - local.get $2 - local.get $2 - local.get $2 + local.get $4 + local.get $4 + local.get $4 + local.get $4 + local.get $4 f64.const -0.036531572744216916 f64.mul f64.const -0.058335701337905735 @@ -2458,13 +2446,13 @@ f64.mul f64.add f64.mul - local.set $2 - local.get $4 + local.set $4 + local.get $3 i32.const 0 i32.lt_s if local.get $0 - local.get $2 + local.get $4 f64.sub return end @@ -2474,11 +2462,11 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 + local.get $3 br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 end f64.const 0.4636476090008061 - local.get $2 + local.get $4 f64.const 2.2698777452961687e-17 f64.sub local.get $0 @@ -2488,7 +2476,7 @@ br $break|0 end f64.const 0.7853981633974483 - local.get $2 + local.get $4 f64.const 3.061616997868383e-17 f64.sub local.get $0 @@ -2498,7 +2486,7 @@ br $break|0 end f64.const 0.982793723247329 - local.get $2 + local.get $4 f64.const 1.3903311031230998e-17 f64.sub local.get $0 @@ -2508,7 +2496,7 @@ br $break|0 end f64.const 1.5707963267948966 - local.get $2 + local.get $4 f64.const 6.123233995736766e-17 f64.sub local.get $0 @@ -2525,9 +2513,9 @@ ) (func $~lib/math/NativeMathf.atan (param $0 f32) (result f32) (local $1 f32) - (local $2 f32) + (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 f32) local.get $0 local.set $1 @@ -2535,7 +2523,7 @@ i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $3 + local.tee $2 i32.const 1283457024 i32.ge_u if @@ -2551,11 +2539,11 @@ f32.copysign return end - local.get $3 + local.get $2 i32.const 1054867456 i32.lt_u if - local.get $3 + local.get $2 i32.const 964689920 i32.lt_u if @@ -2563,16 +2551,16 @@ return end i32.const -1 - local.set $4 + local.set $3 else local.get $0 f32.abs local.set $0 - local.get $3 + local.get $2 i32.const 1066926080 i32.lt_u if (result f32) - local.get $3 + local.get $2 i32.const 1060110336 i32.lt_u if (result f32) @@ -2587,7 +2575,7 @@ f32.div else i32.const 1 - local.set $4 + local.set $3 local.get $0 f32.const 1 f32.sub @@ -2597,12 +2585,12 @@ f32.div end else - local.get $3 + local.get $2 i32.const 1075576832 i32.lt_u if (result f32) i32.const 2 - local.set $4 + local.set $3 local.get $0 f32.const 1.5 f32.sub @@ -2614,7 +2602,7 @@ f32.div else i32.const 3 - local.set $4 + local.set $3 f32.const -1 local.get $0 f32.div @@ -2628,11 +2616,11 @@ local.tee $5 local.get $5 f32.mul - local.set $2 + local.set $4 local.get $0 local.get $5 - local.get $2 - local.get $2 + local.get $4 + local.get $4 f32.const 0.06168760731816292 f32.mul f32.const 0.14253635704517365 @@ -2641,8 +2629,8 @@ f32.const 0.333333283662796 f32.add f32.mul - local.get $2 - local.get $2 + local.get $4 + local.get $4 f32.const -0.106480173766613 f32.mul f32.const -0.19999158382415771 @@ -2650,13 +2638,13 @@ f32.mul f32.add f32.mul - local.set $2 - local.get $4 + local.set $4 + local.get $3 i32.const 0 i32.lt_s if local.get $0 - local.get $2 + local.get $4 f32.sub return end @@ -2666,11 +2654,11 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 + local.get $3 br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 end f32.const 0.46364760398864746 - local.get $2 + local.get $4 f32.const 5.01215824399992e-09 f32.sub local.get $0 @@ -2680,7 +2668,7 @@ br $break|0 end f32.const 0.7853981256484985 - local.get $2 + local.get $4 f32.const 3.774894707930798e-08 f32.sub local.get $0 @@ -2690,7 +2678,7 @@ br $break|0 end f32.const 0.9827936887741089 - local.get $2 + local.get $4 f32.const 3.447321716976148e-08 f32.sub local.get $0 @@ -2700,7 +2688,7 @@ br $break|0 end f32.const 1.570796251296997 - local.get $2 + local.get $4 f32.const 7.549789415861596e-08 f32.sub local.get $0 @@ -2833,61 +2821,53 @@ call $std/math/check ) (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - (local $4 f64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 i32) - (local $7 i32) - (local $8 i64) + (local $7 i64) + (local $8 i32) (local $9 i32) - (local $10 i32) - block $__inlined_func$~lib/math/NativeMath.atan2 - i32.const 1 + (local $10 f64) + block $__inlined_func$~lib/math/NativeMath.atan2 (result f64) + local.get $1 + local.get $0 + f64.add + local.get $0 local.get $0 - local.tee $4 - local.get $4 f64.ne local.get $1 local.get $1 f64.ne - select - if - local.get $1 - local.get $4 - f64.add - local.set $4 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - local.get $4 + i32.or + br_if $__inlined_func$~lib/math/NativeMath.atan2 + drop + local.get $0 i64.reinterpret_f64 - local.tee $8 + local.tee $5 i64.const 32 i64.shr_u i32.wrap_i64 local.set $9 - local.get $8 - i32.wrap_i64 local.get $1 i64.reinterpret_f64 - local.tee $8 + local.tee $7 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $5 - local.get $8 - i32.wrap_i64 - local.tee $10 - local.get $5 + local.tee $8 i32.const 1072693248 i32.sub + local.get $7 + i32.wrap_i64 + local.tee $6 i32.or i32.eqz if - local.get $4 + local.get $0 call $~lib/math/NativeMath.atan - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $5 + local.get $8 i32.const 30 i32.shr_u i32.const 2 @@ -2896,144 +2876,141 @@ i32.const 31 i32.shr_u i32.or - local.set $6 - local.get $5 - i32.const 2147483647 - i32.and - local.set $5 + local.set $4 local.get $9 i32.const 2147483647 i32.and - local.tee $7 + local.tee $9 + local.get $5 + i32.wrap_i64 i32.or i32.eqz if block $break|0 block $case3|0 block $case2|0 - local.get $6 - br_table $__inlined_func$~lib/math/NativeMath.atan2 $__inlined_func$~lib/math/NativeMath.atan2 $case2|0 $case3|0 $break|0 + block $case0|0 + local.get $4 + br_table $case0|0 $case0|0 $case2|0 $case3|0 $break|0 + end + local.get $0 + br $__inlined_func$~lib/math/NativeMath.atan2 end f64.const 3.141592653589793 - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end f64.const -3.141592653589793 - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end end block $folding-inner0 - local.get $5 - local.get $10 + local.get $6 + local.get $8 + i32.const 2147483647 + i32.and + local.tee $8 i32.or i32.eqz br_if $folding-inner0 - local.get $5 + local.get $8 i32.const 2146435072 i32.eq if - local.get $7 + local.get $9 i32.const 2146435072 i32.eq if (result f64) f64.const 2.356194490192345 f64.const 0.7853981633974483 - local.get $6 + local.get $4 i32.const 2 i32.and select else f64.const 3.141592653589793 f64.const 0 - local.get $6 + local.get $4 i32.const 2 i32.and select end - local.tee $4 + local.tee $10 f64.neg + local.get $10 local.get $4 - local.get $6 i32.const 1 i32.and select - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end - i32.const 1 - local.get $7 + local.get $9 i32.const 2146435072 i32.eq - local.get $7 - local.get $5 + local.get $9 + local.get $8 i32.const 67108864 i32.add i32.gt_u - select + i32.or br_if $folding-inner0 - local.get $5 - local.get $7 + local.get $8 + local.get $9 i32.const 67108864 i32.add i32.gt_u i32.const 0 - local.get $6 + local.get $4 i32.const 2 i32.and select if (result f64) f64.const 0 else - local.get $4 + local.get $0 local.get $1 f64.div f64.abs call $~lib/math/NativeMath.atan end - local.set $4 + local.set $10 block $break|1 block $case3|1 block $case2|1 block $case1|1 block $case0|1 - local.get $6 + local.get $4 br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 end + local.get $10 br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $4 + local.get $10 f64.neg - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end f64.const 3.141592653589793 - local.get $4 + local.get $10 f64.const 1.2246467991473532e-16 f64.sub f64.sub - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end - local.get $4 + local.get $10 f64.const 1.2246467991473532e-16 f64.sub f64.const 3.141592653589793 f64.sub - local.set $4 br $__inlined_func$~lib/math/NativeMath.atan2 end unreachable end f64.const -1.5707963267948966 f64.const 1.5707963267948966 - local.get $6 + local.get $4 i32.const 1 i32.and select - local.set $4 end - local.get $4 local.get $2 local.get $3 call $std/math/check @@ -3048,134 +3025,143 @@ i32.const 0 end ) - (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) - (local $2 i32) - (local $3 i32) + (func $std/math/test_atan2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) (local $4 i32) - block $folding-inner0 - i32.const 1 + (local $5 i32) + (local $6 i32) + block $__inlined_func$~lib/math/NativeMathf.atan2 (result f32) + local.get $1 + local.get $0 + f32.add local.get $0 local.get $0 f32.ne local.get $1 local.get $1 f32.ne - select - if - local.get $1 - local.get $0 - f32.add - return - end - local.get $0 - i32.reinterpret_f32 - local.set $3 + i32.or + br_if $__inlined_func$~lib/math/NativeMathf.atan2 + drop local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $5 i32.const 1065353216 i32.eq if local.get $0 call $~lib/math/NativeMathf.atan - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end - local.get $4 + local.get $5 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $3 + local.get $0 + i32.reinterpret_f32 + local.tee $6 i32.const 31 i32.shr_u i32.or - local.set $2 - local.get $4 - i32.const 2147483647 - i32.and local.set $4 - local.get $3 + local.get $6 i32.const 2147483647 i32.and - local.tee $3 + local.tee $6 i32.eqz if block $break|0 block $case3|0 block $case2|0 block $case1|0 - local.get $2 + local.get $4 br_table $case1|0 $case1|0 $case2|0 $case3|0 $break|0 end local.get $0 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end f32.const 3.1415927410125732 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end f32.const -3.1415927410125732 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end end + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 local.get $4 + i32.const 1 + i32.and + select + local.get $5 + i32.const 2147483647 + i32.and + local.tee $5 i32.eqz - br_if $folding-inner0 - local.get $4 + br_if $__inlined_func$~lib/math/NativeMathf.atan2 + drop + local.get $5 i32.const 2139095040 i32.eq if - local.get $3 + local.get $6 i32.const 2139095040 i32.eq if (result f32) f32.const 2.356194496154785 f32.const 0.7853981852531433 - local.get $2 + local.get $4 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $2 + local.get $4 i32.const 1 i32.and select else f32.const 3.1415927410125732 f32.const 0 - local.get $2 + local.get $4 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $2 + local.get $4 i32.const 1 i32.and select end - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 + local.get $4 i32.const 1 - local.get $3 + i32.and + select + local.get $6 i32.const 2139095040 i32.eq - local.get $3 - local.get $4 + local.get $6 + local.get $5 i32.const 218103808 i32.add i32.gt_u - select - br_if $folding-inner0 - local.get $4 - local.get $3 + i32.or + br_if $__inlined_func$~lib/math/NativeMathf.atan2 + drop + local.get $5 + local.get $6 i32.const 218103808 i32.add i32.gt_u i32.const 0 - local.get $2 + local.get $4 i32.const 2 i32.and select @@ -3194,68 +3180,46 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $2 + local.get $4 br_table $case0|1 $case1|1 $case2|1 $case3|1 $break|1 end local.get $0 - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end local.get $0 f32.neg - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end f32.const 3.1415927410125732 local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.sub - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.const 3.1415927410125732 f32.sub - return + br $__inlined_func$~lib/math/NativeMathf.atan2 end unreachable end - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 local.get $2 - i32.const 1 - i32.and - select + local.get $3 + call $std/math/check ) - (func $~lib/math/NativeMath.cbrt (param $0 f64) (result f64) - (local $1 f64) - (local $2 i32) - (local $3 f64) + (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const 2147483647 - i32.and - local.tee $2 - i32.const 2146435072 - i32.ge_u - if + (local $5 f64) + (local $6 f64) + block $__inlined_func$~lib/math/NativeMath.cbrt (result f64) local.get $0 local.get $0 f64.add - return - end - local.get $2 - i32.const 1048576 - i32.lt_u - if (result i32) local.get $0 - f64.const 18014398509481984 - f64.mul i64.reinterpret_f64 local.tee $4 i64.const 32 @@ -3263,97 +3227,128 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $2 - i32.eqz - if + local.tee $3 + i32.const 2146435072 + i32.ge_u + br_if $__inlined_func$~lib/math/NativeMath.cbrt + drop + local.get $3 + i32.const 1048576 + i32.lt_u + if (result i32) local.get $0 - return + local.get $0 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const 2147483647 + i32.and + local.tee $3 + i32.eqz + br_if $__inlined_func$~lib/math/NativeMath.cbrt + drop + local.get $3 + i32.const 3 + i32.div_u + i32.const 696219795 + i32.add + else + local.get $3 + i32.const 3 + i32.div_u + i32.const 715094163 + i32.add end + local.set $3 + local.get $4 + i64.const -9223372036854775808 + i64.and + local.get $3 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + local.tee $5 + local.get $5 + f64.mul + local.get $5 + local.get $0 + f64.div + f64.mul + local.set $6 + local.get $0 + local.get $5 + local.get $6 + local.get $6 + f64.const 1.6214297201053545 + f64.mul + f64.const -1.8849797954337717 + f64.add + f64.mul + f64.const 1.87595182427177 + f64.add + local.get $6 + local.get $6 + f64.mul + local.get $6 + f64.mul + local.get $6 + f64.const 0.14599619288661245 + f64.mul + f64.const -0.758397934778766 + f64.add + f64.mul + f64.add + f64.mul + i64.reinterpret_f64 + i64.const 2147483648 + i64.add + i64.const -1073741824 + i64.and + f64.reinterpret_i64 + local.tee $5 + local.get $5 + f64.mul + f64.div + local.set $6 + local.get $5 + local.get $5 + local.get $6 + local.get $5 + f64.sub + local.get $5 + local.get $5 + f64.add + local.get $6 + f64.add + f64.div + f64.mul + f64.add + end + local.get $1 + local.get $2 + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/Math/cbrt + local.get $1 local.get $2 - i32.const 3 - i32.div_u - i32.const 696219795 - i32.add + call $std/math/check else - local.get $2 - i32.const 3 - i32.div_u - i32.const 715094163 - i32.add + i32.const 0 end - local.set $2 - local.get $4 - i64.const -9223372036854775808 - i64.and - local.get $2 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - local.tee $3 - local.get $3 - f64.mul - local.get $3 - local.get $0 - f64.div - f64.mul - local.set $1 - local.get $0 - local.get $3 - local.get $1 - local.get $1 - f64.const 1.6214297201053545 - f64.mul - f64.const -1.8849797954337717 - f64.add - f64.mul - f64.const 1.87595182427177 - f64.add - local.get $1 - local.get $1 - f64.mul - local.get $1 - f64.mul - local.get $1 - f64.const 0.14599619288661245 - f64.mul - f64.const -0.758397934778766 - f64.add - f64.mul - f64.add - f64.mul - i64.reinterpret_f64 - i64.const 2147483648 - i64.add - i64.const -1073741824 - i64.and - f64.reinterpret_i64 - local.tee $1 - local.get $1 - f64.mul - f64.div - local.set $0 - local.get $1 - local.get $1 - local.get $0 - local.get $1 - f64.sub - local.get $1 - local.get $1 - f64.add - local.get $0 - f64.add - f64.div - f64.mul - f64.add ) (func $std/math/test_cbrtf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f64) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 f64) - (local $7 i32) + (local $7 f64) (local $8 f64) block $__inlined_func$~lib/math/NativeMathf.cbrt (result f32) local.get $0 @@ -3361,20 +3356,20 @@ f32.add local.get $0 i32.reinterpret_f32 - local.tee $7 + local.tee $5 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 2139095040 i32.ge_u br_if $__inlined_func$~lib/math/NativeMathf.cbrt drop - local.get $5 + local.get $4 i32.const 8388608 i32.lt_u if (result i32) local.get $0 - local.get $5 + local.get $4 i32.eqz br_if $__inlined_func$~lib/math/NativeMathf.cbrt drop @@ -3382,7 +3377,7 @@ f32.const 16777216 f32.mul i32.reinterpret_f32 - local.tee $7 + local.tee $5 i32.const 2147483647 i32.and i32.const 3 @@ -3390,13 +3385,13 @@ i32.const 642849266 i32.add else - local.get $5 + local.get $4 i32.const 3 i32.div_u i32.const 709958130 i32.add end - local.get $7 + local.get $5 i32.const -2147483648 i32.and i32.or @@ -3407,38 +3402,38 @@ f64.mul local.get $3 f64.mul - local.set $4 + local.set $6 local.get $3 local.get $0 f64.promote_f32 - local.tee $6 - local.get $6 + local.tee $7 + local.get $7 f64.add - local.tee $8 - local.get $4 + local.tee $3 + local.get $6 f64.add f64.mul + local.get $7 local.get $6 - local.get $4 f64.add - local.get $4 + local.get $6 f64.add f64.div - local.tee $3 - local.get $3 + local.tee $8 + local.get $8 f64.mul - local.get $3 + local.get $8 f64.mul - local.set $4 - local.get $3 + local.set $6 local.get $8 - local.get $4 + local.get $3 + local.get $6 f64.add f64.mul + local.get $7 local.get $6 - local.get $4 f64.add - local.get $4 + local.get $6 f64.add f64.div f32.demote_f64 @@ -3451,15 +3446,15 @@ (local $1 i64) (local $2 i64) (local $3 i64) - (local $4 i64) - (local $5 i64) + (local $4 i32) + (local $5 f64) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i64) (local $9 i64) (local $10 i64) (local $11 i64) - (local $12 f64) + (local $12 i64) local.get $0 i64.const 9223372036854775807 i64.and @@ -3467,11 +3462,11 @@ i64.shr_u i64.const 1045 i64.sub - local.tee $3 + local.tee $1 i64.const 63 i64.and - local.set $4 - local.get $3 + local.set $6 + local.get $1 i64.const 6 i64.shr_s i32.wrap_i64 @@ -3479,44 +3474,44 @@ i32.shl i32.const 5440 i32.add - local.tee $7 + local.tee $4 i64.load - local.set $5 - local.get $7 - i64.load offset=8 local.set $3 - local.get $7 + local.get $4 + i64.load offset=8 + local.set $2 + local.get $4 i64.load offset=16 local.set $1 - local.get $4 + local.get $6 i64.const 0 i64.ne if - local.get $5 - local.get $4 - i64.shl local.get $3 + local.get $6 + i64.shl + local.get $2 i64.const 64 - local.get $4 + local.get $6 i64.sub - local.tee $2 + local.tee $7 i64.shr_u i64.or - local.set $5 - local.get $3 - local.get $4 + local.set $3 + local.get $2 + local.get $6 i64.shl local.get $1 - local.get $2 + local.get $7 i64.shr_u i64.or - local.set $3 + local.set $2 local.get $1 - local.get $4 + local.get $6 i64.shl - local.get $7 + local.get $4 i64.load offset=24 - local.get $2 + local.get $7 i64.shr_u i64.or local.set $1 @@ -3526,42 +3521,42 @@ i64.and i64.const 4503599627370496 i64.or - local.tee $4 + local.tee $6 i64.const 4294967295 i64.and - local.tee $2 - local.get $3 + local.tee $7 + local.get $2 i64.const 32 i64.shr_u local.tee $8 i64.mul local.get $2 - local.get $3 i64.const 4294967295 i64.and local.tee $2 + local.get $7 i64.mul - local.tee $6 + local.tee $7 i64.const 32 i64.shr_u i64.add - local.set $3 + local.set $9 local.get $2 - local.get $4 + local.get $6 i64.const 32 i64.shr_u - local.tee $9 local.tee $10 + local.tee $11 i64.mul - local.get $3 + local.get $9 i64.const 4294967295 i64.and i64.add local.set $2 local.get $8 - local.get $10 + local.get $11 i64.mul - local.get $3 + local.get $9 i64.const 32 i64.shr_u i64.add @@ -3573,10 +3568,10 @@ local.get $1 i64.const 32 i64.shr_u - local.get $9 + local.get $10 i64.mul - local.tee $3 - local.get $6 + local.tee $1 + local.get $7 i64.const 4294967295 i64.and local.get $2 @@ -3584,120 +3579,120 @@ i64.shl i64.add i64.add - local.tee $1 - local.get $3 + local.tee $2 + local.get $1 i64.lt_u i64.extend_i32_u global.get $~lib/math/res128_hi - local.get $4 - local.get $5 + local.get $3 + local.get $6 i64.mul i64.add i64.add - local.tee $8 + local.tee $3 i64.const 2 i64.shl - local.get $1 + local.get $2 i64.const 62 i64.shr_u i64.or - local.tee $5 + local.tee $6 i64.const 63 i64.shr_s - local.tee $4 + local.tee $7 i64.const 1 i64.shr_s - local.get $5 + local.get $6 i64.xor - local.tee $2 + local.tee $1 i64.clz - local.set $3 - local.get $2 - local.get $3 - i64.shl - local.get $4 + local.set $8 local.get $1 + local.get $8 + i64.shl + local.get $7 + local.get $2 i64.const 2 i64.shl i64.xor - local.tee $6 + local.tee $2 i64.const 64 - local.get $3 + local.get $8 i64.sub i64.shr_u i64.or - local.tee $1 + local.tee $9 i64.const 4294967295 i64.and - local.set $2 - local.get $1 + local.set $1 + local.get $9 i64.const 32 i64.shr_u local.tee $10 i64.const 560513588 i64.mul - local.get $2 + local.get $1 i64.const 3373259426 i64.mul - local.get $2 + local.get $1 i64.const 560513588 i64.mul - local.tee $9 + local.tee $11 i64.const 32 i64.shr_u i64.add - local.tee $11 + local.tee $12 i64.const 4294967295 i64.and i64.add - local.set $2 + local.set $1 local.get $10 i64.const 3373259426 i64.mul - local.get $11 + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $2 + local.get $1 i64.const 32 i64.shr_u i64.add global.set $~lib/math/res128_hi - local.get $9 + local.get $11 i64.const 4294967295 i64.and - local.get $2 + local.get $1 i64.const 32 i64.shl i64.add - local.tee $2 - local.get $1 + local.tee $1 + local.get $9 f64.convert_i64_u f64.const 3.753184150245214e-04 f64.mul - local.get $6 - local.get $3 + local.get $2 + local.get $8 i64.shl f64.convert_i64_u f64.const 3.834951969714103e-04 f64.mul f64.add i64.trunc_f64_u - local.tee $1 + local.tee $2 i64.lt_u i64.extend_i32_u global.get $~lib/math/res128_hi - local.tee $6 + local.tee $9 i64.const 11 i64.shr_u i64.add f64.convert_i64_u global.set $~lib/math/rempio2_y0 - local.get $1 - local.get $6 + local.get $2 + local.get $9 i64.const 53 i64.shl - local.get $2 + local.get $1 i64.const 11 i64.shr_u i64.or @@ -3708,28 +3703,28 @@ global.set $~lib/math/rempio2_y1 global.get $~lib/math/rempio2_y0 i64.const 4372995238176751616 - local.get $3 + local.get $8 i64.const 52 i64.shl i64.sub local.get $0 - local.get $5 + local.get $6 i64.xor i64.const -9223372036854775808 i64.and i64.or f64.reinterpret_i64 - local.tee $12 + local.tee $5 f64.mul global.set $~lib/math/rempio2_y0 global.get $~lib/math/rempio2_y1 - local.get $12 + local.get $5 f64.mul global.set $~lib/math/rempio2_y1 - local.get $8 + local.get $3 i64.const 62 i64.shr_s - local.get $4 + local.get $7 i64.sub i32.wrap_i64 ) @@ -3737,10 +3732,10 @@ (local $1 f64) (local $2 i64) (local $3 f64) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f64) (local $8 f64) (local $9 f64) local.get $0 @@ -3749,18 +3744,18 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 31 i32.shr_u local.set $6 - local.get $5 + local.get $4 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1072243195 i32.le_u if - local.get $5 + local.get $4 i32.const 1044816030 i32.lt_u if @@ -3770,26 +3765,26 @@ local.get $0 local.get $0 f64.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 f64.mul - local.set $4 + local.set $3 f64.const 1 - local.get $3 + local.get $1 f64.const 0.5 f64.mul - local.tee $1 + local.tee $7 f64.sub local.tee $8 f64.const 1 local.get $8 f64.sub - local.get $1 + local.get $7 f64.sub - local.get $3 - local.get $3 - local.get $3 - local.get $3 + local.get $1 + local.get $1 + local.get $1 + local.get $1 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -3798,11 +3793,11 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $4 - local.get $4 - f64.mul local.get $3 local.get $3 + f64.mul + local.get $1 + local.get $1 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -3821,7 +3816,7 @@ f64.add return end - local.get $5 + local.get $4 i32.const 2146435072 i32.ge_u if @@ -3837,26 +3832,26 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $7 + local.tee $5 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $5 + local.set $4 local.get $6 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $3 + local.set $0 i32.const -1 - local.set $5 - local.get $7 + local.set $4 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -3864,14 +3859,14 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $3 + local.get $0 f64.const 6.077100506303966e-11 f64.add - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.add local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -3881,13 +3876,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $3 - local.get $7 + local.set $0 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -3895,14 +3890,14 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $3 + local.get $0 f64.const 6.077100506303966e-11 f64.sub - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.sub local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -3912,28 +3907,28 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $5 + local.get $4 br $~lib/math/rempio2|inlined.0 end - local.get $7 + local.get $5 i32.const 1094263291 i32.lt_u if - local.get $7 + local.get $5 i32.const 20 i32.shr_u - local.tee $6 + local.tee $4 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $4 + local.tee $7 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $4 + local.get $7 f64.const 6.077100506506192e-11 f64.mul local.tee $3 @@ -3951,12 +3946,12 @@ i32.const 16 i32.gt_u if - local.get $4 + local.get $7 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 6.077100506303966e-11 f64.mul local.tee $1 @@ -3967,7 +3962,7 @@ f64.sub f64.sub local.set $3 - local.get $6 + local.get $4 local.get $0 local.get $3 f64.sub @@ -3984,12 +3979,12 @@ i32.const 49 i32.gt_u if (result f64) - local.get $4 + local.get $7 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 2.0222662487111665e-21 f64.mul local.tee $1 @@ -4016,41 +4011,41 @@ local.get $3 f64.sub global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $7 i32.trunc_f64_s br $~lib/math/rempio2|inlined.0 end i32.const 0 local.get $2 call $~lib/math/pio2_large_quot - local.tee $5 + local.tee $4 i32.sub - local.get $5 + local.get $4 local.get $6 select end - local.set $6 + local.set $4 global.get $~lib/math/rempio2_y0 - local.set $3 + local.set $1 global.get $~lib/math/rempio2_y1 - local.set $4 - local.get $6 + local.set $3 + local.get $4 i32.const 1 i32.and if (result f64) - local.get $3 - local.get $3 + local.get $1 + local.get $1 f64.mul local.tee $0 - local.get $3 + local.get $1 f64.mul - local.set $1 - local.get $3 + local.set $7 + local.get $1 local.get $0 - local.get $4 + local.get $3 f64.const 0.5 f64.mul - local.get $1 + local.get $7 local.get $0 local.get $0 f64.const 2.7557313707070068e-06 @@ -4075,37 +4070,37 @@ f64.mul f64.sub f64.mul - local.get $4 + local.get $3 f64.sub - local.get $1 + local.get $7 f64.const -0.16666666666666632 f64.mul f64.sub f64.sub else - local.get $3 - local.get $3 + local.get $1 + local.get $1 f64.mul - local.tee $0 - local.get $0 + local.tee $7 + local.get $7 f64.mul - local.set $1 + local.set $8 f64.const 1 - local.get $0 + local.get $7 f64.const 0.5 f64.mul - local.tee $8 + local.tee $0 f64.sub local.tee $9 f64.const 1 local.get $9 f64.sub - local.get $8 - f64.sub - local.get $0 - local.get $0 - local.get $0 local.get $0 + f64.sub + local.get $7 + local.get $7 + local.get $7 + local.get $7 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -4114,11 +4109,11 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $1 - local.get $1 + local.get $8 + local.get $8 f64.mul - local.get $0 - local.get $0 + local.get $7 + local.get $7 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -4129,8 +4124,8 @@ f64.mul f64.add f64.mul + local.get $1 local.get $3 - local.get $4 f64.mul f64.sub f64.add @@ -4139,7 +4134,7 @@ local.tee $0 f64.neg local.get $0 - local.get $6 + local.get $4 i32.const 1 i32.add i32.const 2 @@ -4148,29 +4143,29 @@ ) (func $~lib/math/NativeMathf.cos (param $0 f32) (result f32) (local $1 i32) - (local $2 i32) - (local $3 i64) + (local $2 f64) + (local $3 f64) (local $4 i64) (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 f64) - (local $9 f64) + (local $6 f64) + (local $7 i32) + (local $8 i64) + (local $9 i64) block $folding-inner0 local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $5 i32.const 31 i32.shr_u - local.set $5 - local.get $1 + local.set $1 + local.get $5 i32.const 2147483647 i32.and - local.tee $2 + local.tee $5 i32.const 1061752794 i32.le_u if - local.get $2 + local.get $5 i32.const 964689920 i32.lt_u if @@ -4179,53 +4174,53 @@ end local.get $0 f64.promote_f32 - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $9 + local.set $2 br $folding-inner0 end - local.get $2 + local.get $5 i32.const 1081824209 i32.le_u if - local.get $2 + local.get $5 i32.const 1075235811 i32.gt_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 3.141592653589793 f64.add - local.get $9 + local.get $2 f64.const 3.141592653589793 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.set $9 - local.get $8 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $9 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $9 - local.get $8 + local.get $3 + local.get $2 f64.mul - local.get $8 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4236,46 +4231,46 @@ f32.neg return else - local.get $5 + local.get $1 if (result f64) local.get $0 f64.promote_f32 f64.const 1.5707963267948966 f64.add - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.tee $7 - local.get $8 + local.tee $2 + local.get $3 f64.mul else f64.const 1.5707963267948966 local.get $0 f64.promote_f32 f64.sub - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.tee $7 - local.get $8 + local.tee $2 + local.get $3 f64.mul end - local.set $9 - local.get $8 - local.get $9 - local.get $7 + local.set $6 + local.get $3 + local.get $6 + local.get $2 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $9 - local.get $7 - local.get $7 + local.get $6 + local.get $2 + local.get $2 f64.mul f64.mul - local.get $7 + local.get $2 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4287,74 +4282,74 @@ end unreachable end - local.get $2 + local.get $5 i32.const 1088565717 i32.le_u if - local.get $2 + local.get $5 i32.const 1085271519 i32.gt_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 6.283185307179586 f64.add - local.get $9 + local.get $2 f64.const 6.283185307179586 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $9 + local.set $2 br $folding-inner0 else - local.get $5 + local.get $1 if (result f64) local.get $0 f32.neg f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.tee $7 - local.get $8 + local.tee $2 + local.get $3 f64.mul else local.get $0 f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.tee $7 - local.get $8 + local.tee $2 + local.get $3 f64.mul end - local.set $9 - local.get $8 - local.get $9 - local.get $7 + local.set $6 + local.get $3 + local.get $6 + local.get $2 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $9 - local.get $7 - local.get $7 + local.get $6 + local.get $2 + local.get $2 f64.mul f64.mul - local.get $7 + local.get $2 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4366,7 +4361,7 @@ end unreachable end - local.get $2 + local.get $5 i32.const 2139095040 i32.ge_u if @@ -4376,93 +4371,93 @@ return end block $~lib/math/rempio2f|inlined.0 (result i32) - local.get $2 - local.tee $1 + local.get $5 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $8 - local.get $9 - local.get $8 + local.set $3 + local.get $2 + local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $8 + local.get $3 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $8 + local.get $3 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.0 end - local.get $1 + local.get $5 i32.const 23 i32.shr_s i32.const 152 i32.sub - local.tee $2 + local.tee $7 i32.const 63 i32.and i64.extend_i32_s - local.set $6 + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $9 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $1 + local.get $5 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s local.tee $4 - local.get $2 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $2 + local.get $7 i64.load - local.get $6 + local.get $8 i64.shl - local.get $2 - i64.load offset=8 - local.tee $3 + local.get $9 i64.const 64 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or i64.mul - local.get $6 + local.get $8 i64.const 32 i64.gt_u if (result i64) - local.get $3 - local.get $6 + local.get $9 + local.get $8 i64.const 32 i64.sub i64.shl - local.get $2 + local.get $7 i64.load offset=16 i64.const 96 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or else - local.get $3 + local.get $9 i64.const 32 - local.get $6 + local.get $8 i64.sub i64.shr_u end @@ -4474,7 +4469,7 @@ local.tee $4 i64.const 2 i64.shl - local.tee $6 + local.tee $8 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y @@ -4482,45 +4477,45 @@ local.get $4 i64.const 62 i64.shr_u - local.get $6 + local.get $8 i64.const 63 i64.shr_u i64.add i32.wrap_i64 - local.tee $1 + local.tee $5 i32.sub - local.get $1 local.get $5 + local.get $1 select end local.set $1 global.get $~lib/math/rempio2f_y - local.set $9 + local.set $2 local.get $1 i32.const 1 i32.and if (result f32) - local.get $9 - local.get $9 - local.get $9 + local.get $2 + local.get $2 + local.get $2 f64.mul - local.tee $7 - local.get $9 + local.tee $3 + local.get $2 f64.mul - local.tee $8 - local.get $7 + local.tee $2 + local.get $3 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $8 - local.get $7 - local.get $7 + local.get $2 + local.get $3 + local.get $3 f64.mul f64.mul - local.get $7 + local.get $3 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -4529,26 +4524,26 @@ f64.add f32.demote_f64 else - local.get $9 - local.get $9 + local.get $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.set $9 - local.get $8 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $9 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $9 - local.get $8 + local.get $3 + local.get $2 f64.mul - local.get $8 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4568,19 +4563,19 @@ select return end - local.get $8 + local.get $3 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $9 + local.get $2 f64.const 0.04166662332373906 f64.mul f64.add - local.get $9 - local.get $8 + local.get $2 + local.get $3 f64.mul - local.get $8 + local.get $3 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -4590,29 +4585,29 @@ f32.demote_f64 ) (func $~lib/math/NativeMath.expm1 (param $0 f64) (result f64) - (local $1 f64) + (local $1 i32) (local $2 f64) (local $3 i32) - (local $4 f64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 f64) - (local $7 i32) - (local $8 i64) + (local $7 f64) + (local $8 f64) local.get $0 i64.reinterpret_f64 - local.tee $8 + local.tee $5 i64.const 32 i64.shr_u i64.const 2147483647 i64.and i32.wrap_i64 - local.set $5 - local.get $8 + local.set $3 + local.get $5 i64.const 63 i64.shr_u i32.wrap_i64 - local.set $7 - local.get $5 + local.set $4 + local.get $3 i32.const 1078159482 i32.ge_u if @@ -4623,7 +4618,7 @@ local.get $0 return end - local.get $7 + local.get $4 if f64.const -1 return @@ -4638,13 +4633,13 @@ return end end - local.get $5 + local.get $3 i32.const 1071001154 i32.gt_u if local.get $0 i32.const 1 - local.get $7 + local.get $4 i32.const 1 i32.shl i32.sub @@ -4656,30 +4651,30 @@ f64.copysign f64.add i32.trunc_f64_s - local.get $5 + local.get $3 i32.const 1072734898 i32.lt_u select - local.tee $3 - f64.convert_i32_s local.tee $1 + f64.convert_i32_s + local.tee $0 f64.const 0.6931471803691238 f64.mul f64.sub - local.tee $4 - local.get $4 - local.get $1 + local.tee $2 + local.get $2 + local.get $0 f64.const 1.9082149292705877e-10 f64.mul - local.tee $1 + local.tee $2 f64.sub local.tee $0 f64.sub - local.get $1 + local.get $2 f64.sub - local.set $4 + local.set $2 else - local.get $5 + local.get $3 i32.const 1016070144 i32.lt_u if @@ -4691,26 +4686,26 @@ local.get $0 f64.const 0.5 f64.mul - local.tee $2 + local.tee $7 f64.mul - local.tee $1 - local.get $1 + local.tee $6 + local.get $6 f64.mul - local.set $6 + local.set $8 f64.const 3 - local.get $1 + local.get $6 f64.const -0.03333333333333313 f64.mul f64.const 1 f64.add + local.get $8 local.get $6 - local.get $1 f64.const -7.93650757867488e-05 f64.mul f64.const 1.5873015872548146e-03 f64.add + local.get $8 local.get $6 - local.get $1 f64.const -2.0109921818362437e-07 f64.mul f64.const 4.008217827329362e-06 @@ -4719,51 +4714,51 @@ f64.add f64.mul f64.add - local.tee $6 - local.get $2 + local.tee $8 + local.get $7 f64.mul f64.sub - local.set $2 - local.get $1 + local.set $7 local.get $6 - local.get $2 + local.get $8 + local.get $7 f64.sub f64.const 6 local.get $0 - local.get $2 + local.get $7 f64.mul f64.sub f64.div f64.mul - local.set $2 - local.get $3 + local.set $7 + local.get $1 i32.eqz if local.get $0 local.get $0 - local.get $2 + local.get $7 f64.mul - local.get $1 + local.get $6 f64.sub f64.sub return end local.get $0 + local.get $7 local.get $2 - local.get $4 f64.sub f64.mul - local.get $4 + local.get $2 f64.sub - local.get $1 + local.get $6 f64.sub - local.set $1 - local.get $3 + local.set $2 + local.get $1 i32.const -1 i32.eq if local.get $0 - local.get $1 + local.get $2 f64.sub f64.const 0.5 f64.mul @@ -4771,7 +4766,7 @@ f64.sub return end - local.get $3 + local.get $1 i32.const 1 i32.eq if @@ -4779,7 +4774,7 @@ f64.const -0.25 f64.lt if - local.get $1 + local.get $2 local.get $0 f64.const 0.5 f64.add @@ -4789,7 +4784,7 @@ return end local.get $0 - local.get $1 + local.get $2 f64.sub f64.const 2 f64.mul @@ -4797,25 +4792,24 @@ f64.add return end - local.get $3 + local.get $1 i64.extend_i32_s i64.const 1023 i64.add i64.const 52 i64.shl f64.reinterpret_i64 - local.set $4 - i32.const 1 - local.get $3 - i32.const 56 - i32.gt_s - local.get $3 + local.set $6 + local.get $1 i32.const 0 i32.lt_s - select + local.get $1 + i32.const 56 + i32.gt_s + i32.or if local.get $0 - local.get $1 + local.get $2 f64.sub f64.const 1 f64.add @@ -4825,9 +4819,9 @@ f64.const 8988465674311579538646525e283 f64.mul local.get $0 - local.get $4 + local.get $6 f64.mul - local.get $3 + local.get $1 i32.const 1024 i32.eq select @@ -4838,43 +4832,42 @@ local.get $0 f64.const 1 i64.const 1023 - local.get $3 + local.get $1 i64.extend_i32_s i64.sub i64.const 52 i64.shl f64.reinterpret_i64 - local.tee $2 + local.tee $0 f64.sub - local.get $1 + local.get $2 f64.sub f64.const 1 - local.get $1 local.get $2 + local.get $0 f64.add f64.sub - local.get $3 + local.get $1 i32.const 20 i32.lt_s select f64.add - local.get $4 + local.get $6 f64.mul ) (func $~lib/math/NativeMath.exp (param $0 f64) (result f64) (local $1 i32) - (local $2 f64) - (local $3 i64) + (local $2 i64) + (local $3 i32) (local $4 f64) - (local $5 i64) - (local $6 f64) - (local $7 i32) + (local $5 f64) + (local $6 i64) + (local $7 f64) (local $8 f64) block $~lib/util/math/exp_lut|inlined.0 (result f64) local.get $0 - local.tee $2 i64.reinterpret_f64 - local.tee $3 + local.tee $2 i64.const 52 i64.shr_u i64.const 2047 @@ -4899,12 +4892,12 @@ i32.ge_u if f64.const 0 - local.get $3 + local.get $2 i64.const -4503599627370496 i64.eq br_if $~lib/util/math/exp_lut|inlined.0 drop - local.get $2 + local.get $0 f64.const 1 f64.add local.get $1 @@ -4914,7 +4907,7 @@ drop f64.const 0 f64.const inf - local.get $3 + local.get $2 i64.const 63 i64.shr_u i32.wrap_i64 @@ -4924,14 +4917,14 @@ i32.const 0 local.set $1 end - local.get $2 + local.get $0 f64.const 184.6649652337873 f64.mul f64.const 6755399441055744 f64.add - local.tee $0 + local.tee $4 i64.reinterpret_f64 - local.tee $5 + local.tee $6 i64.const 127 i64.and i64.const 1 @@ -4941,15 +4934,15 @@ i32.shl i32.const 5664 i32.add - local.tee $7 + local.tee $3 i64.load offset=8 - local.get $5 + local.get $6 i64.const 45 i64.shl i64.add - local.set $3 - local.get $2 + local.set $2 local.get $0 + local.get $4 f64.const 6755399441055744 f64.sub local.tee $0 @@ -4963,12 +4956,12 @@ local.tee $0 local.get $0 f64.mul - local.set $2 - local.get $7 + local.set $4 + local.get $3 f64.load local.get $0 f64.add - local.get $2 + local.get $4 local.get $0 f64.const 0.16666666666665886 f64.mul @@ -4976,8 +4969,8 @@ f64.add f64.mul f64.add - local.get $2 - local.get $2 + local.get $4 + local.get $4 f64.mul local.get $0 f64.const 0.008333335853059549 @@ -4986,128 +4979,128 @@ f64.add f64.mul f64.add - local.set $0 + local.set $4 local.get $1 i32.eqz if block $~lib/util/math/specialcase|inlined.0 (result f64) - local.get $5 + local.get $6 i64.const 2147483648 i64.and i64.eqz if - local.get $3 + local.get $2 i64.const 4544132024016830464 i64.sub f64.reinterpret_i64 - local.tee $2 - local.get $2 + local.tee $0 local.get $0 + local.get $4 f64.mul f64.add f64.const 5486124068793688683255936e279 f64.mul br $~lib/util/math/specialcase|inlined.0 end - local.get $3 + local.get $2 i64.const 4602678819172646912 i64.add - local.tee $3 + local.tee $2 f64.reinterpret_i64 - local.tee $4 + local.tee $7 + local.get $7 local.get $4 - local.get $0 f64.mul f64.add - local.tee $2 + local.tee $5 f64.abs f64.const 1 f64.lt if (result f64) f64.const 1 - local.get $2 + local.get $5 f64.copysign - local.tee $6 - local.get $2 - f64.add local.tee $8 - local.get $6 + local.get $5 + f64.add + local.tee $0 local.get $8 + local.get $0 f64.sub - local.get $2 + local.get $5 f64.add - local.get $4 - local.get $2 + local.get $7 + local.get $5 f64.sub + local.get $7 local.get $4 - local.get $0 f64.mul f64.add f64.add f64.add - local.get $6 + local.get $8 f64.sub - local.tee $2 + local.tee $0 f64.const 0 f64.eq if (result f64) - local.get $3 + local.get $2 i64.const -9223372036854775808 i64.and f64.reinterpret_i64 else - local.get $2 + local.get $0 end else - local.get $2 + local.get $5 end f64.const 2.2250738585072014e-308 f64.mul end br $~lib/util/math/exp_lut|inlined.0 end - local.get $3 - f64.reinterpret_i64 - local.tee $2 local.get $2 + f64.reinterpret_i64 + local.tee $0 local.get $0 + local.get $4 f64.mul f64.add end ) (func $std/math/test_cosh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) + (local $3 i32) + (local $4 i64) + (local $5 f64) block $__inlined_func$~lib/math/NativeMath.cosh (result f64) local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $5 + local.tee $4 f64.reinterpret_i64 - local.set $3 - local.get $5 + local.set $5 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 1072049730 i32.lt_u if f64.const 1 - local.get $4 + local.get $3 i32.const 1045430272 i32.lt_u br_if $__inlined_func$~lib/math/NativeMath.cosh drop - local.get $3 + local.get $5 call $~lib/math/NativeMath.expm1 - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 f64.mul - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.add f64.const 2 f64.add @@ -5116,22 +5109,22 @@ f64.add br $__inlined_func$~lib/math/NativeMath.cosh end - local.get $4 + local.get $3 i32.const 1082535490 i32.lt_u if - local.get $3 + local.get $5 call $~lib/math/NativeMath.exp - local.tee $3 + local.tee $5 f64.const 1 - local.get $3 + local.get $5 f64.div f64.add f64.const 0.5 f64.mul br $__inlined_func$~lib/math/NativeMath.cosh end - local.get $3 + local.get $5 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp @@ -5154,40 +5147,40 @@ end ) (func $~lib/math/NativeMathf.expm1 (param $0 f32) (result f32) - (local $1 f32) + (local $1 i32) (local $2 f32) (local $3 i32) (local $4 f32) (local $5 i32) - (local $6 i32) + (local $6 f32) (local $7 f32) local.get $0 i32.reinterpret_f32 - local.tee $6 + local.tee $5 i32.const 2147483647 i32.and - local.set $5 - local.get $6 + local.set $3 + local.get $5 i32.const 31 i32.shr_u - local.set $6 - local.get $5 + local.set $5 + local.get $3 i32.const 1100331076 i32.ge_u if - local.get $5 + local.get $3 i32.const 2139095040 i32.gt_u if local.get $0 return end - local.get $6 + local.get $5 if f32.const -1 return end - local.get $5 + local.get $3 i32.const 1118925335 i32.gt_u if @@ -5197,13 +5190,13 @@ return end end - local.get $5 + local.get $3 i32.const 1051816472 i32.gt_u if local.get $0 i32.const 1 - local.get $6 + local.get $5 i32.const 1 i32.shl i32.sub @@ -5215,30 +5208,30 @@ f32.copysign f32.add i32.trunc_f32_s - local.get $5 + local.get $3 i32.const 1065686418 i32.lt_u select - local.tee $3 - f32.convert_i32_s local.tee $1 + f32.convert_i32_s + local.tee $0 f32.const 0.6931381225585938 f32.mul f32.sub - local.tee $4 - local.get $4 - local.get $1 + local.tee $2 + local.get $2 + local.get $0 f32.const 9.05800061445916e-06 f32.mul - local.tee $1 + local.tee $2 f32.sub local.tee $0 f32.sub - local.get $1 + local.get $2 f32.sub - local.set $4 + local.set $2 else - local.get $5 + local.get $3 i32.const 855638016 i32.lt_u if @@ -5251,10 +5244,10 @@ local.get $0 f32.const 0.5 f32.mul - local.tee $2 + local.tee $6 f32.mul - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 f32.const 1.5807170420885086e-03 f32.mul f32.const -0.03333321213722229 @@ -5263,50 +5256,50 @@ f32.const 1 f32.add local.tee $7 - local.get $2 + local.get $6 f32.mul f32.sub - local.set $2 - local.get $1 + local.set $6 + local.get $4 local.get $7 - local.get $2 + local.get $6 f32.sub f32.const 6 local.get $0 - local.get $2 + local.get $6 f32.mul f32.sub f32.div f32.mul - local.set $2 - local.get $3 + local.set $6 + local.get $1 i32.eqz if local.get $0 local.get $0 - local.get $2 + local.get $6 f32.mul - local.get $1 + local.get $4 f32.sub f32.sub return end local.get $0 + local.get $6 local.get $2 - local.get $4 f32.sub f32.mul + local.get $2 + f32.sub local.get $4 f32.sub + local.set $2 local.get $1 - f32.sub - local.set $1 - local.get $3 i32.const -1 i32.eq if local.get $0 - local.get $1 + local.get $2 f32.sub f32.const 0.5 f32.mul @@ -5314,7 +5307,7 @@ f32.sub return end - local.get $3 + local.get $1 i32.const 1 i32.eq if @@ -5322,7 +5315,7 @@ f32.const -0.25 f32.lt if - local.get $1 + local.get $2 local.get $0 f32.const 0.5 f32.add @@ -5332,7 +5325,7 @@ return end local.get $0 - local.get $1 + local.get $2 f32.sub f32.const 2 f32.mul @@ -5340,24 +5333,23 @@ f32.add return end - local.get $3 + local.get $1 i32.const 127 i32.add i32.const 23 i32.shl f32.reinterpret_i32 local.set $4 - i32.const 1 - local.get $3 - i32.const 56 - i32.gt_s - local.get $3 + local.get $1 i32.const 0 i32.lt_s - select + local.get $1 + i32.const 56 + i32.gt_s + i32.or if local.get $0 - local.get $1 + local.get $2 f32.sub f32.const 1 f32.add @@ -5369,7 +5361,7 @@ local.get $0 local.get $4 f32.mul - local.get $3 + local.get $1 i32.const 128 i32.eq select @@ -5380,21 +5372,21 @@ local.get $0 f32.const 1 i32.const 127 - local.get $3 + local.get $1 i32.sub i32.const 23 i32.shl f32.reinterpret_i32 - local.tee $2 + local.tee $0 f32.sub - local.get $1 + local.get $2 f32.sub f32.const 1 - local.get $1 local.get $2 + local.get $0 f32.add f32.sub - local.get $3 + local.get $1 i32.const 20 i32.lt_s select @@ -5409,8 +5401,6 @@ (local $4 i32) (local $5 f64) block $~lib/util/math/expf_lut|inlined.0 (result f32) - local.get $0 - f64.promote_f32 local.get $0 i32.reinterpret_f32 local.tee $3 @@ -5451,6 +5441,8 @@ br_if $~lib/util/math/expf_lut|inlined.0 drop end + local.get $0 + f64.promote_f32 f64.const 46.16624130844683 f64.mul local.tee $1 @@ -5562,18 +5554,17 @@ ) (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 i32) - (local $4 f64) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 f64) (local $7 f64) (local $8 i64) - (local $9 i32) + (local $9 f64) (local $10 f64) block $~lib/util/math/exp2_lut|inlined.0 (result f64) local.get $0 - local.tee $4 i64.reinterpret_f64 - local.tee $5 + local.tee $4 i64.const 52 i64.shr_u i64.const 2047 @@ -5598,12 +5589,12 @@ i32.ge_u if f64.const 0 - local.get $5 + local.get $4 i64.const -4503599627370496 i64.eq br_if $~lib/util/math/exp2_lut|inlined.0 drop - local.get $4 + local.get $0 f64.const 1 f64.add local.get $3 @@ -5612,14 +5603,14 @@ br_if $~lib/util/math/exp2_lut|inlined.0 drop f64.const inf - local.get $5 + local.get $4 i64.const 63 i64.shr_u i64.eqz br_if $~lib/util/math/exp2_lut|inlined.0 drop f64.const 0 - local.get $5 + local.get $4 i64.const -4570929321408987136 i64.ge_u br_if $~lib/util/math/exp2_lut|inlined.0 @@ -5627,7 +5618,7 @@ end i32.const 0 local.get $3 - local.get $5 + local.get $4 i64.const 1 i64.shl i64.const -9143996093422370816 @@ -5635,10 +5626,10 @@ select local.set $3 end - local.get $4 + local.get $0 f64.const 52776558133248 f64.add - local.tee $0 + local.tee $6 i64.reinterpret_f64 local.tee $8 i64.const 127 @@ -5650,47 +5641,47 @@ i32.shl i32.const 5664 i32.add - local.tee $9 + local.tee $5 i64.load offset=8 local.get $8 i64.const 45 i64.shl i64.add - local.set $5 - local.get $4 + local.set $4 local.get $0 + local.get $6 f64.const 52776558133248 f64.sub f64.sub - local.tee $0 - local.get $0 + local.tee $6 + local.get $6 f64.mul - local.set $6 - local.get $9 + local.set $7 + local.get $5 f64.load - local.get $0 + local.get $6 f64.const 0.6931471805599453 f64.mul f64.add + local.get $7 local.get $6 - local.get $0 f64.const 0.0555041086686087 f64.mul f64.const 0.24022650695909065 f64.add f64.mul f64.add - local.get $6 - local.get $6 + local.get $7 + local.get $7 f64.mul - local.get $0 + local.get $6 f64.const 1.3332074570119598e-03 f64.mul f64.const 0.009618131975721055 f64.add f64.mul f64.add - local.set $6 + local.set $7 local.get $3 i32.eqz if @@ -5700,46 +5691,46 @@ i64.and i64.eqz if - local.get $5 + local.get $4 i64.const 4503599627370496 i64.sub f64.reinterpret_i64 - local.tee $0 - local.get $6 + local.tee $6 + local.get $7 f64.mul - local.get $0 + local.get $6 f64.add f64.const 2 f64.mul br $~lib/util/math/specialcase2|inlined.0 end - local.get $5 + local.get $4 i64.const 4602678819172646912 i64.add f64.reinterpret_i64 - local.tee $7 - local.get $6 - f64.mul + local.tee $9 local.get $7 + f64.mul + local.get $9 f64.add - local.tee $0 + local.tee $10 f64.const 1 f64.lt if (result f64) - local.get $0 + local.get $10 f64.const 1 f64.add - local.tee $10 + local.tee $6 f64.const 1 - local.get $10 + local.get $6 f64.sub - local.get $0 + local.get $10 f64.add - local.get $7 - local.get $0 + local.get $9 + local.get $10 f64.sub + local.get $9 local.get $7 - local.get $6 f64.mul f64.add f64.add @@ -5747,19 +5738,19 @@ f64.const 1 f64.sub else - local.get $0 + local.get $10 end f64.const 2.2250738585072014e-308 f64.mul end br $~lib/util/math/exp2_lut|inlined.0 end - local.get $5 + local.get $4 f64.reinterpret_i64 - local.tee $0 - local.get $6 + local.tee $6 + local.get $7 f64.mul - local.get $0 + local.get $6 f64.add end local.get $1 @@ -5767,7 +5758,7 @@ call $std/math/check if (result i32) f64.const 2 - local.get $4 + local.get $0 call $~lib/bindings/Math/pow local.get $1 local.get $2 @@ -5783,9 +5774,6 @@ (local $6 i32) (local $7 f64) block $~lib/util/math/exp2f_lut|inlined.0 (result f32) - local.get $0 - f64.promote_f32 - local.set $3 local.get $0 i32.reinterpret_f32 local.tee $5 @@ -5826,7 +5814,9 @@ br_if $~lib/util/math/exp2f_lut|inlined.0 drop end - local.get $3 + local.get $0 + f64.promote_f32 + local.tee $3 f64.const 211106232532992 f64.add local.tee $7 @@ -5873,174 +5863,173 @@ local.get $2 call $std/math/check ) - (func $~lib/math/NativeMath.hypot (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) + (func $std/math/test_hypot (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) (local $4 i64) - (local $5 f64) - (local $6 i32) + (local $5 i64) + (local $6 i64) (local $7 f64) - (local $8 i32) + (local $8 f64) (local $9 f64) - (local $10 f64) + (local $10 i32) (local $11 f64) - local.get $1 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $2 - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $3 - i64.gt_u - if - local.get $3 - local.get $2 - local.set $3 - local.set $2 - end - local.get $2 - f64.reinterpret_i64 - local.set $1 - local.get $2 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $6 - i32.const 2047 - i32.eq - if + (local $12 i32) + (local $13 f64) + block $__inlined_func$~lib/math/NativeMath.hypot (result f64) local.get $1 - return - end - local.get $3 - f64.reinterpret_i64 - local.set $0 - i64.const 0 - local.get $2 - local.get $3 - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $8 - i32.const 2047 - i32.eq - select - i64.eqz - if + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $5 local.get $0 - return - end - local.get $8 - local.get $6 - i32.sub - i32.const 64 - i32.gt_s - if + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $4 + i64.gt_u + if + local.get $4 + local.get $5 + local.set $4 + local.set $5 + end + local.get $5 + f64.reinterpret_i64 + local.tee $1 + local.get $5 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $10 + i32.const 2047 + i32.eq + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop + local.get $4 + f64.reinterpret_i64 + local.tee $0 + local.get $5 + i64.eqz + local.get $4 + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $12 + i32.const 2047 + i32.eq + i32.or + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop local.get $0 local.get $1 f64.add - return - end - f64.const 1 - local.set $7 - local.get $8 - i32.const 1533 - i32.gt_u - if (result f64) - f64.const 5260135901548373507240989e186 - local.set $7 - local.get $1 - f64.const 1.90109156629516e-211 - f64.mul - local.set $1 - local.get $0 - f64.const 1.90109156629516e-211 - f64.mul - else - local.get $6 - i32.const 573 - i32.lt_u + local.get $12 + local.get $10 + i32.sub + i32.const 64 + i32.gt_s + br_if $__inlined_func$~lib/math/NativeMath.hypot + drop + f64.const 1 + local.set $11 + local.get $12 + i32.const 1533 + i32.gt_u if (result f64) - f64.const 1.90109156629516e-211 - local.set $7 - local.get $1 f64.const 5260135901548373507240989e186 + local.set $11 + local.get $1 + f64.const 1.90109156629516e-211 f64.mul local.set $1 local.get $0 - f64.const 5260135901548373507240989e186 + f64.const 1.90109156629516e-211 f64.mul else - local.get $0 + local.get $10 + i32.const 573 + i32.lt_u + if (result f64) + f64.const 1.90109156629516e-211 + local.set $11 + local.get $1 + f64.const 5260135901548373507240989e186 + f64.mul + local.set $1 + local.get $0 + f64.const 5260135901548373507240989e186 + f64.mul + else + local.get $0 + end end + local.tee $7 + local.get $7 + local.get $7 + f64.const 134217729 + f64.mul + local.tee $0 + f64.sub + local.get $0 + f64.add + local.tee $0 + f64.sub + local.set $9 + local.get $1 + local.get $1 + local.get $1 + f64.const 134217729 + f64.mul + local.tee $8 + f64.sub + local.get $8 + f64.add + local.tee $13 + f64.sub + local.set $8 + local.get $11 + local.get $13 + local.get $13 + f64.mul + local.get $1 + local.get $1 + f64.mul + local.tee $1 + f64.sub + local.get $13 + local.get $13 + f64.add + local.get $8 + f64.add + local.get $8 + f64.mul + f64.add + local.get $0 + local.get $0 + f64.mul + local.get $7 + local.get $7 + f64.mul + local.tee $7 + f64.sub + local.get $0 + local.get $0 + f64.add + local.get $9 + f64.add + local.get $9 + f64.mul + f64.add + f64.add + local.get $1 + f64.add + local.get $7 + f64.add + f64.sqrt + f64.mul end - local.tee $0 - local.get $0 - local.get $0 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $10 - f64.sub - local.set $5 - local.get $1 - local.get $1 - local.get $1 - f64.const 134217729 - f64.mul - local.tee $11 - f64.sub - local.get $11 - f64.add - local.tee $9 - f64.sub - local.set $11 - local.get $7 - local.get $9 - local.get $9 - f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $1 - f64.sub - local.get $9 - local.get $9 - f64.add - local.get $11 - f64.add - local.get $11 - f64.mul - f64.add - local.get $10 - local.get $10 - f64.mul - local.get $0 - local.get $0 - f64.mul - local.tee $0 - f64.sub - local.get $10 - local.get $10 - f64.add - local.get $5 - f64.add - local.get $5 - f64.mul - f64.add - f64.add - local.get $1 - f64.add - local.get $0 - f64.add - f64.sqrt - f64.mul + local.get $2 + local.get $3 + call $std/math/check ) (func $std/math/test_hypotf (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) (local $4 i32) @@ -6053,84 +6042,82 @@ i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $4 + local.tee $5 local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.gt_u if - local.get $5 local.get $4 - local.set $5 + local.get $5 local.set $4 + local.set $5 end local.get $5 f32.reinterpret_i32 - local.set $0 - local.get $4 - f32.reinterpret_i32 local.tee $1 - local.get $4 + local.get $5 i32.const 2139095040 i32.eq br_if $__inlined_func$~lib/math/NativeMathf.hypot drop - local.get $0 + local.get $4 + f32.reinterpret_i32 + local.tee $8 local.get $1 f32.add local.get $5 + i32.eqz local.get $4 - i32.sub - i32.const 209715200 + i32.const 2139095040 i32.ge_u - i32.const 1 - i32.const 0 + i32.or local.get $4 local.get $5 - i32.const 2139095040 + i32.sub + i32.const 209715200 i32.ge_u - select - select + i32.or br_if $__inlined_func$~lib/math/NativeMathf.hypot drop f32.const 1 - local.set $8 - local.get $5 + local.set $0 + local.get $4 i32.const 1568669696 i32.ge_u if (result f32) f32.const 1237940039285380274899124e3 - local.set $8 + local.set $0 local.get $1 f32.const 8.077935669463161e-28 f32.mul local.set $1 - local.get $0 + local.get $8 f32.const 8.077935669463161e-28 f32.mul else - local.get $4 + local.get $5 i32.const 562036736 i32.lt_u if (result f32) f32.const 8.077935669463161e-28 - local.set $8 + local.set $0 local.get $1 f32.const 1237940039285380274899124e3 f32.mul local.set $1 - local.get $0 + local.get $8 f32.const 1237940039285380274899124e3 f32.mul else - local.get $0 + local.get $8 end end - local.set $0 - local.get $8 + local.set $8 local.get $0 + local.get $8 f64.promote_f32 local.tee $7 local.get $7 @@ -6149,375 +6136,386 @@ local.get $3 call $std/math/check ) - (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) - (local $1 i32) - (local $2 f64) - (local $3 f64) - (local $4 f64) - (local $5 i64) + (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) (local $6 f64) (local $7 f64) - (local $8 i32) - i32.const 1 - local.get $0 - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 1048576 - i32.lt_u - select - if - local.get $5 - i64.const 1 - i64.shl - i64.eqz + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + block $__inlined_func$~lib/math/NativeMath.log10 (result f64) + local.get $0 + i64.reinterpret_f64 + local.tee $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $3 + i32.const 31 + i32.shr_u + local.get $3 + i32.const 1048576 + i32.lt_u + i32.or if f64.const -1 local.get $0 local.get $0 f64.mul f64.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if + local.get $4 + i64.const 1 + i64.shl + i64.eqz + br_if $__inlined_func$~lib/math/NativeMath.log10 + drop local.get $0 local.get $0 f64.sub f64.const 0 f64.div - return - end - i32.const -54 - local.set $8 - local.get $0 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $5 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $1 - else - local.get $1 - i32.const 2146435072 - i32.ge_u - if + local.get $3 + i32.const 31 + i32.shr_u + br_if $__inlined_func$~lib/math/NativeMath.log10 + drop + i32.const -54 + local.set $5 local.get $0 - return - else - local.get $5 + f64.const 18014398509481984 + f64.mul + i64.reinterpret_f64 + local.tee $4 i64.const 32 - i64.shl - i64.const 1 - local.get $1 - i32.const 1072693248 - i32.eq - select - i64.eqz + i64.shr_u + i32.wrap_i64 + local.set $3 + else + local.get $3 + i32.const 2146435072 + i32.ge_u if + local.get $0 + br $__inlined_func$~lib/math/NativeMath.log10 + else f64.const 0 - return + local.get $4 + i64.const 32 + i64.shl + i64.eqz + local.get $3 + i32.const 1072693248 + i32.eq + i32.and + br_if $__inlined_func$~lib/math/NativeMath.log10 + drop end end + local.get $4 + i64.const 4294967295 + i64.and + local.get $3 + i32.const 614242 + i32.add + local.tee $3 + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + f64.const 1 + f64.sub + local.tee $6 + f64.const 0.5 + f64.mul + local.get $6 + f64.mul + local.set $7 + local.get $6 + local.get $6 + f64.const 2 + f64.add + f64.div + local.tee $8 + local.get $8 + f64.mul + local.tee $9 + local.get $9 + f64.mul + local.set $10 + local.get $6 + local.get $6 + local.get $7 + f64.sub + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $11 + f64.sub + local.get $7 + f64.sub + local.get $8 + local.get $7 + local.get $9 + local.get $10 + local.get $10 + local.get $10 + f64.const 0.14798198605116586 + f64.mul + f64.const 0.1818357216161805 + f64.add + f64.mul + f64.const 0.2857142874366239 + f64.add + f64.mul + f64.const 0.6666666666666735 + f64.add + f64.mul + local.get $10 + local.get $10 + local.get $10 + f64.const 0.15313837699209373 + f64.mul + f64.const 0.22222198432149784 + f64.add + f64.mul + f64.const 0.3999999999940942 + f64.add + f64.mul + f64.add + f64.add + f64.mul + f64.add + local.set $7 + local.get $3 + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + local.get $5 + i32.add + f64.convert_i32_s + local.tee $8 + f64.const 0.30102999566361177 + f64.mul + local.tee $9 + local.get $11 + f64.const 0.4342944818781689 + f64.mul + local.tee $10 + f64.add + local.set $6 + local.get $8 + f64.const 3.694239077158931e-13 + f64.mul + local.get $7 + local.get $11 + f64.add + f64.const 2.5082946711645275e-11 + f64.mul + f64.add + local.get $7 + f64.const 0.4342944818781689 + f64.mul + f64.add + local.get $9 + local.get $6 + f64.sub + local.get $10 + f64.add + f64.add + local.get $6 + f64.add end - local.get $5 - i64.const 4294967295 - i64.and local.get $1 - i32.const 614242 - i32.add - local.tee $1 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $0 - f64.const 0.5 - f64.mul - local.get $0 - f64.mul - local.set $3 - local.get $0 - local.get $0 - f64.const 2 - f64.add - f64.div - local.tee $6 - local.get $6 - f64.mul - local.tee $4 - local.get $4 - f64.mul - local.set $2 - local.get $0 - local.get $0 - local.get $3 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $7 - f64.sub - local.get $3 - f64.sub - local.get $6 - local.get $3 - local.get $4 - local.get $2 - local.get $2 - local.get $2 - f64.const 0.14798198605116586 - f64.mul - f64.const 0.1818357216161805 - f64.add - f64.mul - f64.const 0.2857142874366239 - f64.add - f64.mul - f64.const 0.6666666666666735 - f64.add - f64.mul - local.get $2 - local.get $2 - local.get $2 - f64.const 0.15313837699209373 - f64.mul - f64.const 0.22222198432149784 - f64.add - f64.mul - f64.const 0.3999999999940942 - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.set $0 - local.get $1 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - local.get $8 - i32.add - f64.convert_i32_s - local.tee $2 - f64.const 0.30102999566361177 - f64.mul - local.tee $3 - local.get $7 - f64.const 0.4342944818781689 - f64.mul - local.tee $6 - f64.add - local.set $4 local.get $2 - f64.const 3.694239077158931e-13 - f64.mul - local.get $0 - local.get $7 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $0 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.get $3 - local.get $4 - f64.sub - local.get $6 - f64.add - f64.add - local.get $4 - f64.add + call $std/math/check + if (result i32) + local.get $0 + call $~lib/bindings/Math/log10 + local.get $1 + local.get $2 + call $std/math/check + else + i32.const 0 + end ) - (func $~lib/math/NativeMathf.log10 (param $0 f32) (result f32) - (local $1 i32) - (local $2 f32) - (local $3 f32) - (local $4 f32) + (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (local $3 i32) + (local $4 i32) (local $5 f32) - (local $6 i32) + (local $6 f32) (local $7 f32) - i32.const 1 - local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const 31 - i32.shr_u - local.get $1 - i32.const 8388608 - i32.lt_u - select - if - local.get $1 - i32.const 1 - i32.shl - i32.eqz + (local $8 f32) + (local $9 f32) + block $__inlined_func$~lib/math/NativeMathf.log10 (result f32) + local.get $0 + i32.reinterpret_f32 + local.tee $3 + i32.const 31 + i32.shr_u + local.get $3 + i32.const 8388608 + i32.lt_u + i32.or if f32.const -1 local.get $0 local.get $0 f32.mul f32.div - return - end - local.get $1 - i32.const 31 - i32.shr_u - if + local.get $3 + i32.const 1 + i32.shl + i32.eqz + br_if $__inlined_func$~lib/math/NativeMathf.log10 + drop local.get $0 local.get $0 f32.sub f32.const 0 f32.div - return - end - i32.const -25 - local.set $6 - local.get $0 - f32.const 33554432 - f32.mul - i32.reinterpret_f32 - local.set $1 - else - local.get $1 - i32.const 2139095040 - i32.ge_u - if + local.get $3 + i32.const 31 + i32.shr_u + br_if $__inlined_func$~lib/math/NativeMathf.log10 + drop + i32.const -25 + local.set $4 local.get $0 - return + f32.const 33554432 + f32.mul + i32.reinterpret_f32 + local.set $3 else - local.get $1 - i32.const 1065353216 - i32.eq + local.get $3 + i32.const 2139095040 + i32.ge_u if + local.get $0 + br $__inlined_func$~lib/math/NativeMathf.log10 + else f32.const 0 - return + local.get $3 + i32.const 1065353216 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.log10 + drop end end + local.get $3 + i32.const 4913933 + i32.add + local.tee $3 + i32.const 8388607 + i32.and + i32.const 1060439283 + i32.add + f32.reinterpret_i32 + f32.const 1 + f32.sub + local.tee $7 + local.get $7 + f32.const 2 + f32.add + f32.div + local.tee $0 + local.get $0 + f32.mul + local.tee $5 + local.get $5 + f32.mul + local.set $8 + local.get $3 + i32.const 23 + i32.shr_u + i32.const 127 + i32.sub + local.get $4 + i32.add + f32.convert_i32_s + local.tee $6 + f32.const 7.903415166765626e-07 + f32.mul + local.get $7 + local.get $7 + local.get $7 + f32.const 0.5 + f32.mul + local.get $7 + f32.mul + local.tee $7 + f32.sub + i32.reinterpret_f32 + i32.const -4096 + i32.and + f32.reinterpret_i32 + local.tee $9 + f32.sub + local.get $7 + f32.sub + local.get $0 + local.get $7 + local.get $5 + local.get $8 + f32.const 0.2849878668785095 + f32.mul + f32.const 0.6666666269302368 + f32.add + f32.mul + local.get $8 + local.get $8 + f32.const 0.24279078841209412 + f32.mul + f32.const 0.40000972151756287 + f32.add + f32.mul + f32.add + f32.add + f32.mul + f32.add + local.tee $0 + local.get $9 + f32.add + f32.const -3.168997136526741e-05 + f32.mul + f32.add + local.get $0 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $9 + f32.const 0.434326171875 + f32.mul + f32.add + local.get $6 + f32.const 0.3010292053222656 + f32.mul + f32.add end local.get $1 - i32.const 4913933 - i32.add - local.tee $1 - i32.const 8388607 - i32.and - i32.const 1060439283 - i32.add - f32.reinterpret_i32 - f32.const 1 - f32.sub - local.tee $0 - local.get $0 - f32.const 2 - f32.add - f32.div - local.tee $3 - local.get $3 - f32.mul - local.tee $4 - local.get $4 - f32.mul - local.set $2 - local.get $1 - i32.const 23 - i32.shr_u - i32.const 127 - i32.sub - local.get $6 - i32.add - f32.convert_i32_s - local.tee $7 - f32.const 7.903415166765626e-07 - f32.mul - local.get $0 - local.get $0 - local.get $0 - f32.const 0.5 - f32.mul - local.get $0 - f32.mul - local.tee $0 - f32.sub - i32.reinterpret_f32 - i32.const -4096 - i32.and - f32.reinterpret_i32 - local.tee $5 - f32.sub - local.get $0 - f32.sub - local.get $3 - local.get $0 - local.get $4 - local.get $2 - f32.const 0.2849878668785095 - f32.mul - f32.const 0.6666666269302368 - f32.add - f32.mul - local.get $2 local.get $2 - f32.const 0.24279078841209412 - f32.mul - f32.const 0.40000972151756287 - f32.add - f32.mul - f32.add - f32.add - f32.mul - f32.add - local.tee $0 - local.get $5 - f32.add - f32.const -3.168997136526741e-05 - f32.mul - f32.add - local.get $0 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $5 - f32.const 0.434326171875 - f32.mul - f32.add - local.get $7 - f32.const 0.3010292053222656 - f32.mul - f32.add + call $std/math/check ) (func $~lib/math/NativeMath.log2 (param $0 f64) (result f64) (local $1 i64) - (local $2 f64) - (local $3 i32) + (local $2 i32) + (local $3 i64) (local $4 f64) (local $5 f64) (local $6 f64) (local $7 f64) - (local $8 i64) - (local $9 i32) - (local $10 f64) + (local $8 f64) + (local $9 f64) + (local $10 i32) block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 i64.reinterpret_f64 @@ -6530,70 +6528,70 @@ local.get $0 f64.const 1 f64.sub - local.tee $0 + local.tee $5 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $7 + local.tee $6 f64.const 1.4426950407214463 f64.mul - local.set $4 - local.get $0 - local.get $0 + local.set $7 + local.get $5 + local.get $5 f64.mul - local.tee $2 - local.get $2 + local.tee $8 + local.get $8 f64.mul - local.set $5 - local.get $4 - local.get $2 - local.get $0 + local.set $0 + local.get $7 + local.get $8 + local.get $5 f64.const 0.48089834696298744 f64.mul f64.const -0.7213475204444817 f64.add f64.mul - local.tee $6 + local.tee $4 f64.add - local.tee $10 - local.get $0 - local.get $7 + local.tee $9 + local.get $5 + local.get $6 f64.sub f64.const 1.4426950407214463 f64.mul - local.get $0 + local.get $5 f64.const 1.6751713164886512e-10 f64.mul f64.add - local.get $4 - local.get $10 + local.get $7 + local.get $9 f64.sub - local.get $6 + local.get $4 f64.add f64.add - local.get $5 local.get $0 + local.get $5 f64.const 0.2885390081805197 f64.mul f64.const -0.360673760222145 f64.add - local.get $2 - local.get $0 + local.get $8 + local.get $5 f64.const 0.2060992861022954 f64.mul f64.const -0.24044917405728863 f64.add f64.mul f64.add - local.get $5 local.get $0 + local.get $5 f64.const 0.1603032746063156 f64.mul f64.const -0.18033596705327856 f64.add - local.get $2 - local.get $0 + local.get $8 + local.get $5 f64.const 0.13046826811283835 f64.mul f64.const -0.14483316576701266 @@ -6611,7 +6609,7 @@ i64.const 48 i64.shr_u i32.wrap_i64 - local.tee $3 + local.tee $2 i32.const 16 i32.sub i32.const 32736 @@ -6629,32 +6627,31 @@ br_if $~lib/util/math/log2_lut|inlined.0 drop local.get $0 - local.tee $2 local.get $1 i64.const 9218868437227405312 i64.eq br_if $~lib/util/math/log2_lut|inlined.0 drop i32.const 1 - local.get $3 + local.get $2 i32.const 32752 i32.and i32.const 32752 i32.eq - local.get $3 + local.get $2 i32.const 32768 i32.and select if - local.get $2 - local.get $2 + local.get $0 + local.get $0 f64.sub local.tee $0 local.get $0 f64.div br $~lib/util/math/log2_lut|inlined.0 end - local.get $2 + local.get $0 f64.const 4503599627370496 f64.mul i64.reinterpret_f64 @@ -6665,7 +6662,7 @@ local.get $1 i64.const 4604367669032910848 i64.sub - local.tee $8 + local.tee $3 i64.const 46 i64.shr_u i64.const 63 @@ -6673,83 +6670,83 @@ i32.wrap_i64 i32.const 4 i32.shl - local.tee $3 + local.tee $2 i32.const 7968 i32.add - local.set $9 - local.get $8 + local.set $10 + local.get $3 i64.const 52 i64.shr_s f64.convert_i64_s - local.get $9 + local.get $10 f64.load offset=8 f64.add - local.tee $7 + local.tee $0 local.get $1 - local.get $8 + local.get $3 i64.const -4503599627370496 i64.and i64.sub f64.reinterpret_i64 - local.get $3 + local.get $2 i32.const 8992 i32.add - local.tee $3 + local.tee $2 f64.load f64.sub - local.get $3 + local.get $2 f64.load offset=8 f64.sub - local.get $9 + local.get $10 f64.load f64.mul - local.tee $0 + local.tee $4 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $4 + local.tee $5 f64.const 1.4426950407214463 f64.mul - local.tee $5 + local.tee $6 f64.add - local.set $6 + local.set $7 + local.get $0 local.get $7 - local.get $6 f64.sub - local.get $5 + local.get $6 f64.add - local.get $0 local.get $4 + local.get $5 f64.sub f64.const 1.4426950407214463 f64.mul - local.get $0 + local.get $4 f64.const 1.6751713164886512e-10 f64.mul f64.add f64.add - local.get $0 - local.get $0 + local.get $4 + local.get $4 f64.mul - local.tee $2 - local.get $0 + local.tee $0 + local.get $4 f64.const 0.4808983469629985 f64.mul f64.const -0.7213475204444882 f64.add - local.get $2 local.get $0 + local.get $4 f64.const 0.2885390073180969 f64.mul f64.const -0.36067375954075914 f64.add f64.mul f64.add - local.get $2 - local.get $2 - f64.mul local.get $0 + local.get $0 + f64.mul + local.get $4 f64.const 0.2061202382173603 f64.mul f64.const -0.2404693555628422 @@ -6758,7 +6755,7 @@ f64.add f64.mul f64.add - local.get $6 + local.get $7 f64.add end ) @@ -6790,16 +6787,15 @@ i32.eq br_if $~lib/util/math/log2f_lut|inlined.0 drop - i32.const 1 + local.get $3 + i32.const 31 + i32.shr_u local.get $3 i32.const 1 i32.shl i32.const -16777216 i32.ge_u - local.get $3 - i32.const 31 - i32.shr_u - select + i32.or if local.get $0 local.get $0 @@ -6919,6 +6915,7 @@ (local $7 i64) (local $8 f64) (local $9 i64) + (local $10 i64) block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 local.get $0 @@ -6934,34 +6931,32 @@ drop local.get $1 i64.reinterpret_f64 - local.tee $4 + local.tee $7 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $6 - i32.const 1 - local.get $1 - local.get $1 - f64.ne - i32.const 1 + local.set $9 + local.get $7 + i64.const 1 + i64.shl + local.tee $5 + i64.eqz local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $4 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $5 + local.tee $10 i64.const 2047 i64.eq - local.get $4 - i64.const 1 - i64.shl - local.tee $7 - i64.eqz - select - select + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if local.get $0 local.get $1 @@ -6971,152 +6966,149 @@ f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $7 - local.get $3 + local.get $5 + local.get $4 i64.const 1 i64.shl - local.tee $9 + local.tee $3 i64.ge_u if local.get $0 - local.get $7 - local.get $9 + local.get $3 + local.get $5 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $3 + local.get $4 i64.const 63 i64.shr_u - local.set $7 - local.get $5 + local.get $10 i64.eqz if (result i64) - local.get $3 + local.get $4 i64.const 1 - local.get $5 - local.get $3 + local.get $10 + local.get $4 i64.const 12 i64.shl i64.clz i64.sub - local.tee $5 + local.tee $10 i64.sub i64.shl else - local.get $3 + local.get $4 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $3 - local.get $6 + local.get $9 i64.eqz if (result i64) - local.get $4 + local.get $7 i64.const 1 - local.get $6 - local.get $4 + local.get $9 + local.get $7 i64.const 12 i64.shl i64.clz i64.sub - local.tee $6 + local.tee $9 i64.sub i64.shl else - local.get $4 + local.get $7 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $4 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - local.get $6 - i64.gt_s - if + loop $while-continue|0 + local.get $9 + local.get $10 + i64.lt_s + if + local.get $3 + local.get $4 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $4 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 local.get $4 - i64.ge_u - if (result i64) - local.get $3 - local.get $4 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $5 - i64.const 1 i64.sub - local.set $5 - br $while-continue|0 + else + local.get $3 end + i64.const 1 + i64.shl + local.set $3 + local.get $10 + i64.const 1 + i64.sub + local.set $10 + br $while-continue|0 end - local.get $5 + end + local.get $10 + local.get $3 + local.get $4 + i64.ge_u + if + local.get $0 + f64.const 0 + f64.mul local.get $3 local.get $4 - i64.ge_u - if - local.get $3 - local.get $4 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i64.sub - local.set $3 - end + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $5 + local.get $4 i64.sub - local.set $4 - local.get $3 - local.get $5 - i64.shl local.set $3 - local.get $4 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.sub - local.get $4 - i64.const 52 - i64.shl - i64.or - else - local.get $3 - i64.const 1 - local.get $4 - i64.sub - i64.shr_u - end - local.get $7 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - br $__inlined_func$~lib/math/NativeMath.mod end - local.get $0 - f64.const 0 - f64.mul + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $5 + i64.sub + local.set $4 + i64.const 63 + i64.shl + local.get $3 + local.get $5 + i64.shl + local.tee $3 + i64.const 4503599627370496 + i64.sub + local.get $4 + i64.const 52 + i64.shl + i64.or + local.get $3 + i64.const 1 + local.get $4 + i64.sub + i64.shr_u + local.get $4 + i64.const 0 + i64.gt_s + select + i64.or + f64.reinterpret_i64 end local.get $2 f64.const 0 @@ -7139,6 +7131,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $1 f32.abs f32.const 1 @@ -7154,31 +7147,31 @@ end local.get $1 i32.reinterpret_f32 - local.tee $3 + local.tee $6 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $5 + local.set $7 i32.const 1 local.get $1 local.get $1 f32.ne local.get $0 i32.reinterpret_f32 - local.tee $2 + local.tee $4 i32.const 23 i32.shr_u i32.const 255 i32.and - local.tee $4 + local.tee $8 i32.const 255 i32.eq i32.const 1 - local.get $3 + local.get $6 i32.const 1 i32.shl - local.tee $6 + local.tee $3 select select if @@ -7190,163 +7183,164 @@ f32.div return end - local.get $6 - local.get $2 + local.get $3 + local.get $4 i32.const 1 i32.shl - local.tee $7 + local.tee $2 i32.ge_u if local.get $0 - local.get $6 - local.get $7 + local.get $2 + local.get $3 i32.ne f32.convert_i32_u f32.mul return end - local.get $2 + local.get $4 i32.const -2147483648 i32.and - local.set $6 - local.get $4 + local.set $5 + local.get $8 if (result i32) - local.get $2 + local.get $4 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $2 + local.get $4 i32.const 1 + local.get $8 local.get $4 - local.get $2 i32.const 9 i32.shl i32.clz i32.sub - local.tee $4 + local.tee $8 i32.sub i32.shl end local.set $2 - local.get $5 + local.get $7 if (result i32) - local.get $3 + local.get $6 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $3 + local.get $6 i32.const 1 - local.get $5 - local.get $3 + local.get $7 + local.get $6 i32.const 9 i32.shl i32.clz i32.sub - local.tee $5 + local.tee $7 i32.sub i32.shl end local.set $3 - block $folding-inner0 - loop $while-continue|0 - local.get $4 - local.get $5 - i32.gt_s - if + loop $while-continue|0 + local.get $7 + local.get $8 + i32.lt_s + if + local.get $2 + local.get $3 + i32.ge_u + if (result i32) local.get $2 local.get $3 - i32.ge_u - if (result i32) - local.get $2 - local.get $3 - i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub - else - local.get $2 + i32.eq + if + local.get $0 + f32.const 0 + f32.mul + return end - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 + local.get $2 + local.get $3 i32.sub - local.set $4 - br $while-continue|0 + else + local.get $2 end + i32.const 1 + i32.shl + local.set $2 + local.get $8 + i32.const 1 + i32.sub + local.set $8 + br $while-continue|0 end - local.get $4 + end + local.get $8 + local.get $2 + local.get $3 + i32.ge_u + if local.get $2 local.get $3 - i32.ge_u + i32.eq if - local.get $2 - local.get $3 - i32.eq - br_if $folding-inner0 - local.get $2 - local.get $3 - i32.sub - local.set $2 + local.get $0 + f32.const 0 + f32.mul + return end local.get $2 - i32.const 8 - i32.shl - i32.clz - local.tee $3 - i32.sub - local.set $4 - local.get $2 local.get $3 - i32.shl + i32.sub local.set $2 - local.get $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $2 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $6 - i32.or - f32.reinterpret_i32 - return end - local.get $0 - f32.const 0 - f32.mul + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.tee $4 + i32.sub + local.set $3 + local.get $2 + local.get $4 + i32.shl + local.tee $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u + local.get $3 + i32.const 0 + i32.gt_s + select + local.get $5 + i32.or + f32.reinterpret_i32 ) (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i32) - (local $4 f64) - (local $5 i64) + (local $4 i64) + (local $5 i32) (local $6 i64) (local $7 f64) - (local $8 i64) + (local $8 f64) (local $9 f64) (local $10 f64) (local $11 i32) - (local $12 i32) - (local $13 f64) - (local $14 i64) + (local $12 i64) + (local $13 i64) + (local $14 f64) (local $15 f64) (local $16 f64) (local $17 f64) @@ -7405,464 +7399,440 @@ end block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $1 - local.tee $4 i64.reinterpret_f64 + local.tee $12 + i64.const 52 + i64.shr_u local.tee $6 + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + local.get $0 + i64.reinterpret_f64 + local.tee $2 i64.const 52 i64.shr_u - local.set $14 - block $~lib/util/math/exp_inline|inlined.0 (result f64) - local.get $0 - local.tee $1 - i64.reinterpret_f64 - local.tee $2 - i64.const 52 - i64.shr_u - local.tee $8 + local.tee $4 + i64.const 1 + i64.sub + i64.const 2046 + i64.ge_u + i32.or + if + local.get $12 + i64.const 1 + i64.shl i64.const 1 i64.sub - i64.const 2046 + i64.const -9007199254740993 i64.ge_u - if (result i32) - i32.const 1 - else - local.get $14 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 128 - i64.ge_u - end if - local.get $6 + f64.const 1 + local.get $12 i64.const 1 i64.shl + i64.eqz + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const nan:0x8000000000000 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + local.get $0 + local.get $1 + f64.add + local.get $12 i64.const 1 - i64.sub - i64.const -9007199254740993 - i64.ge_u - if - f64.const 1 - local.get $6 - i64.const 1 - i64.shl - i64.eqz - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const nan:0x8000000000000 - local.get $2 - i64.const 4607182418800017408 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - local.get $1 - local.get $4 - f64.add - i32.const 1 - local.get $6 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - local.get $2 - i64.const 1 - i64.shl - i64.const -9007199254740992 - i64.gt_u - select - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const nan:0x8000000000000 - local.get $2 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const 0 - local.get $6 - i64.const 63 - i64.shr_u - i64.eqz - local.get $2 - i64.const 1 - i64.shl - i64.const 9214364837600034816 - i64.lt_u - i32.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - local.get $4 - local.get $4 - f64.mul - br $~lib/util/math/pow_lut|inlined.0 - end + i64.shl + i64.const -9007199254740992 + i64.gt_u local.get $2 i64.const 1 i64.shl + i64.const -9007199254740992 + i64.gt_u + i32.or + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const nan:0x8000000000000 + local.get $2 i64.const 1 - i64.sub - i64.const -9007199254740993 - i64.ge_u - if - f64.const 1 - local.get $1 - local.get $1 - f64.mul - local.tee $0 - f64.neg - local.get $0 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - if (result i32) - block $~lib/util/math/checkint|inlined.0 (result i32) - i32.const 0 - local.get $6 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $5 - i64.const 1023 - i64.lt_u - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 2 - local.get $5 - i64.const 1075 - i64.gt_u - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 0 - i64.const 1 - i64.const 1075 - local.get $5 - i64.sub - i64.shl - local.tee $5 - i64.const 1 - i64.sub - local.get $6 - i64.and - i64.const 0 - i64.ne - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 1 - local.get $5 - local.get $6 - i64.and - i64.const 0 - i64.ne - br_if $~lib/util/math/checkint|inlined.0 - drop - i32.const 2 - end - i32.const 1 - i32.eq - else - i32.const 0 - end - select - local.tee $0 - f64.div - local.get $0 - local.get $6 - i64.const 63 - i64.shr_u - i32.wrap_i64 - select - br $~lib/util/math/pow_lut|inlined.0 - end + i64.shl + i64.const 9214364837600034816 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 0 + local.get $12 + i64.const 63 + i64.shr_u + i64.eqz + local.get $2 + i64.const 1 + i64.shl + i64.const 9214364837600034816 + i64.lt_u + i32.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + local.get $1 + local.get $1 + f64.mul + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 1 + i64.shl + i64.const 1 + i64.sub + i64.const -9007199254740993 + i64.ge_u + if + f64.const 1 + local.get $0 + local.get $0 + f64.mul + local.tee $0 + f64.neg + local.get $0 local.get $2 i64.const 63 i64.shr_u i32.wrap_i64 - if - block $~lib/util/math/checkint|inlined.1 (result i32) + if (result i32) + block $~lib/util/math/checkint|inlined.0 (result i32) i32.const 0 - local.get $6 + local.get $12 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $5 + local.tee $2 i64.const 1023 i64.lt_u - br_if $~lib/util/math/checkint|inlined.1 + br_if $~lib/util/math/checkint|inlined.0 drop i32.const 2 - local.get $5 + local.get $2 i64.const 1075 i64.gt_u - br_if $~lib/util/math/checkint|inlined.1 + br_if $~lib/util/math/checkint|inlined.0 drop i32.const 0 i64.const 1 i64.const 1075 - local.get $5 + local.get $2 i64.sub i64.shl - local.tee $5 + local.tee $2 i64.const 1 i64.sub - local.get $6 + local.get $12 i64.and i64.const 0 i64.ne - br_if $~lib/util/math/checkint|inlined.1 + br_if $~lib/util/math/checkint|inlined.0 drop i32.const 1 - local.get $5 - local.get $6 + local.get $2 + local.get $12 i64.and i64.const 0 i64.ne - br_if $~lib/util/math/checkint|inlined.1 + br_if $~lib/util/math/checkint|inlined.0 drop i32.const 2 end - local.tee $11 - i32.eqz - if - local.get $1 - local.get $1 - f64.sub - local.tee $0 - local.get $0 - f64.div - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $8 - i64.const 2047 - i64.and - local.set $8 - i32.const 262144 - i32.const 0 - local.get $11 i32.const 1 i32.eq - select - local.set $12 - local.get $2 - i64.const 9223372036854775807 - i64.and - local.set $2 + else + i32.const 0 end - local.get $14 - i64.const 2047 - i64.and - i64.const 958 - i64.sub - i64.const 128 - i64.ge_u - if - f64.const 1 - local.get $2 - i64.const 4607182418800017408 - i64.eq - br_if $~lib/util/math/pow_lut|inlined.0 - drop - f64.const 1 - local.get $14 + select + local.tee $0 + f64.div + local.get $0 + local.get $12 + i64.const 63 + i64.shr_u + i32.wrap_i64 + select + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $2 + i64.const 63 + i64.shr_u + i32.wrap_i64 + if + block $~lib/util/math/checkint|inlined.1 (result i32) + i32.const 0 + local.get $12 + i64.const 52 + i64.shr_u i64.const 2047 i64.and - i64.const 958 + local.tee $13 + i64.const 1023 i64.lt_u - br_if $~lib/util/math/pow_lut|inlined.0 + br_if $~lib/util/math/checkint|inlined.1 drop - f64.const inf - f64.const 0 - local.get $14 - i64.const 2048 - i64.lt_u - local.get $2 - i64.const 4607182418800017408 + i32.const 2 + local.get $13 + i64.const 1075 i64.gt_u - i32.eq - select - br $~lib/util/math/pow_lut|inlined.0 - end - local.get $8 - i64.eqz - if (result i64) - local.get $1 - f64.const 4503599627370496 - f64.mul - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - i64.const 234187180623265792 + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 0 + i64.const 1 + i64.const 1075 + local.get $13 i64.sub - else - local.get $2 + i64.shl + local.tee $13 + i64.const 1 + i64.sub + local.get $12 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 1 + local.get $12 + local.get $13 + i64.and + i64.const 0 + i64.ne + br_if $~lib/util/math/checkint|inlined.1 + drop + i32.const 2 end - local.set $2 - end - local.get $2 - local.get $2 - i64.const 4604531861337669632 - i64.sub - local.tee $8 - i64.const -4503599627370496 - i64.and - i64.sub - local.tee $5 - i64.const 2147483648 - i64.add - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $1 - local.get $8 - i64.const 45 - i64.shr_u - i64.const 127 - i64.and - i32.wrap_i64 - i32.const 5 - i32.shl - i32.const 10272 - i32.add - local.tee $11 - f64.load - local.tee $0 - f64.mul - f64.const 1 - f64.sub - local.set $13 - local.get $8 - i64.const 52 - i64.shr_s - f64.convert_i64_s - local.tee $17 - f64.const 0.6931471805598903 - f64.mul - local.get $11 - f64.load offset=16 - f64.add - local.tee $18 - local.get $13 - local.get $5 - f64.reinterpret_i64 - local.get $1 - f64.sub - local.get $0 - f64.mul - local.tee $7 - f64.add - local.tee $10 - f64.add - local.set $15 - local.get $10 - local.get $10 - f64.const -0.5 - f64.mul - local.tee $9 - f64.mul - local.set $16 - local.get $15 - local.get $13 - local.get $13 - f64.const -0.5 - f64.mul - local.tee $1 - f64.mul - local.tee $0 - f64.add - local.tee $13 - local.get $13 - local.get $17 - f64.const 5.497923018708371e-14 - f64.mul - local.get $11 - f64.load offset=24 - f64.add - local.get $18 - local.get $15 - f64.sub - local.get $10 - f64.add - f64.add - local.get $7 - local.get $9 - local.get $1 - f64.add - f64.mul - f64.add - local.get $15 - local.get $13 - f64.sub + local.tee $3 + i32.eqz + if + local.get $0 + local.get $0 + f64.sub + local.tee $0 + local.get $0 + f64.div + br $~lib/util/math/pow_lut|inlined.0 + end + local.get $4 + i64.const 2047 + i64.and + local.set $4 + i32.const 262144 + i32.const 0 + local.get $3 + i32.const 1 + i32.eq + select + local.set $5 + local.get $2 + i64.const 9223372036854775807 + i64.and + local.set $2 + end + local.get $6 + i64.const 2047 + i64.and + i64.const 958 + i64.sub + i64.const 128 + i64.ge_u + if + f64.const 1 + local.get $2 + i64.const 4607182418800017408 + i64.eq + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const 1 + local.get $6 + i64.const 2047 + i64.and + i64.const 958 + i64.lt_u + br_if $~lib/util/math/pow_lut|inlined.0 + drop + f64.const inf + f64.const 0 + local.get $6 + i64.const 2048 + i64.lt_u + local.get $2 + i64.const 4607182418800017408 + i64.gt_u + i32.eq + select + br $~lib/util/math/pow_lut|inlined.0 + end local.get $0 - f64.add - f64.add - local.get $10 - local.get $16 - f64.mul - local.get $10 - f64.const 0.5000000000000007 - f64.mul - f64.const -0.6666666666666679 - f64.add - local.get $16 - local.get $10 - f64.const -0.6666666663487739 - f64.mul - f64.const 0.7999999995323976 - f64.add - local.get $16 - local.get $10 - f64.const 1.0000415263675542 - f64.mul - f64.const -1.142909628459501 - f64.add - f64.mul - f64.add - f64.mul - f64.add + f64.const 4503599627370496 f64.mul - f64.add - local.tee $0 - f64.add - local.tee $1 - f64.sub - local.get $0 - f64.add - global.set $~lib/util/math/log_tail - local.get $6 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + i64.const 234187180623265792 + i64.sub + local.get $2 + local.get $4 + i64.eqz + select + local.set $2 + end + local.get $2 + local.get $2 + i64.const 4604531861337669632 + i64.sub + local.tee $2 + i64.const -4503599627370496 + i64.and + i64.sub + local.tee $4 + i64.const 2147483648 + i64.add + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $7 + local.get $2 + i64.const 45 + i64.shr_u + i64.const 127 + i64.and + i32.wrap_i64 + i32.const 5 + i32.shl + i32.const 10272 + i32.add + local.tee $3 + f64.load + local.tee $8 + f64.mul + f64.const 1 + f64.sub + local.set $9 + local.get $2 + i64.const 52 + i64.shr_s + f64.convert_i64_s + local.tee $14 + f64.const 0.6931471805598903 + f64.mul + local.get $3 + f64.load offset=16 + f64.add + local.tee $0 + local.get $9 + local.get $4 + f64.reinterpret_i64 + local.get $7 + f64.sub + local.get $8 + f64.mul + local.tee $7 + f64.add + local.tee $15 + f64.add + local.set $16 + local.get $15 + local.get $15 + f64.const -0.5 + f64.mul + local.tee $8 + f64.mul + local.set $17 + local.get $16 + local.get $9 + local.get $9 + f64.const -0.5 + f64.mul + local.tee $18 + f64.mul + local.tee $9 + f64.add + local.tee $10 + local.get $10 + local.get $14 + f64.const 5.497923018708371e-14 + f64.mul + local.get $3 + f64.load offset=24 + f64.add + local.get $0 + local.get $16 + f64.sub + local.get $15 + f64.add + f64.add + local.get $7 + local.get $8 + local.get $18 + f64.add + f64.mul + f64.add + local.get $16 + local.get $10 + f64.sub + local.get $9 + f64.add + f64.add + local.get $15 + local.get $17 + f64.mul + local.get $15 + f64.const 0.5000000000000007 + f64.mul + f64.const -0.6666666666666679 + f64.add + local.get $17 + local.get $15 + f64.const -0.6666666663487739 + f64.mul + f64.const 0.7999999995323976 + f64.add + local.get $17 + local.get $15 + f64.const 1.0000415263675542 + f64.mul + f64.const -1.142909628459501 + f64.add + f64.mul + f64.add + f64.mul + f64.add + f64.mul + f64.add + local.tee $0 + f64.add + local.tee $7 + f64.sub + local.get $0 + f64.add + global.set $~lib/util/math/log_tail + block $~lib/util/math/exp_inline|inlined.0 (result f64) + local.get $12 i64.const -134217728 i64.and f64.reinterpret_i64 - local.tee $7 - local.get $1 + local.tee $0 + local.get $7 i64.reinterpret_f64 i64.const -134217728 i64.and f64.reinterpret_i64 - local.tee $0 - f64.mul - local.set $9 - local.get $4 - local.get $7 - f64.sub - local.get $0 - f64.mul - local.get $4 - local.get $1 - local.get $0 - f64.sub - global.get $~lib/util/math/log_tail - f64.add + local.tee $8 f64.mul - f64.add - local.set $1 - local.get $9 + local.tee $9 i64.reinterpret_f64 - local.tee $5 + local.tee $2 i64.const 52 i64.shr_u i32.wrap_i64 @@ -7876,7 +7846,7 @@ if f64.const -1 f64.const 1 - local.get $12 + local.get $5 select local.get $3 i32.const 969 @@ -7885,21 +7855,21 @@ i32.ge_u br_if $~lib/util/math/exp_inline|inlined.0 drop - local.get $5 + local.get $2 i64.const 63 i64.shr_u i32.wrap_i64 if (result f64) f64.const -1.2882297539194267e-231 f64.const 1.2882297539194267e-231 - local.get $12 + local.get $5 select f64.const 1.2882297539194267e-231 f64.mul else f64.const -3105036184601417870297958e207 f64.const 3105036184601417870297958e207 - local.get $12 + local.get $5 select f64.const 3105036184601417870297958e207 f64.mul @@ -7917,9 +7887,9 @@ f64.mul f64.const 6755399441055744 f64.add - local.tee $0 + local.tee $10 i64.reinterpret_f64 - local.tee $8 + local.tee $2 i64.const 127 i64.and i64.const 1 @@ -7931,48 +7901,60 @@ i32.add local.tee $11 i64.load offset=8 - local.get $12 + local.get $5 i64.extend_i32_u - local.get $8 + local.get $2 i64.add i64.const 45 i64.shl i64.add - local.set $5 + local.set $4 local.get $9 - local.get $0 + local.get $10 f64.const 6755399441055744 f64.sub - local.tee $0 + local.tee $9 f64.const -0.005415212348111709 f64.mul f64.add - local.get $0 + local.get $9 f64.const -1.2864023111638346e-14 f64.mul f64.add local.get $1 - f64.add - local.tee $1 + local.get $0 + f64.sub + local.get $8 + f64.mul local.get $1 + local.get $7 + local.get $8 + f64.sub + global.get $~lib/util/math/log_tail + f64.add f64.mul - local.set $0 + f64.add + f64.add + local.tee $0 + local.get $0 + f64.mul + local.set $1 local.get $11 f64.load - local.get $1 - f64.add local.get $0 + f64.add local.get $1 + local.get $0 f64.const 0.16666666666665886 f64.mul f64.const 0.49999999999996786 f64.add f64.mul f64.add - local.get $0 - local.get $0 - f64.mul local.get $1 + local.get $1 + f64.mul + local.get $0 f64.const 0.008333335853059549 f64.mul f64.const 0.0416666808410674 @@ -7984,12 +7966,12 @@ i32.eqz if block $~lib/util/math/specialcase|inlined.1 (result f64) - local.get $8 + local.get $2 i64.const 2147483648 i64.and i64.eqz if - local.get $5 + local.get $4 i64.const 4544132024016830464 i64.sub f64.reinterpret_i64 @@ -8002,13 +7984,13 @@ f64.mul br $~lib/util/math/specialcase|inlined.1 end - local.get $5 + local.get $4 i64.const 4602678819172646912 i64.add - local.tee $5 + local.tee $2 f64.reinterpret_i64 - local.tee $9 - local.get $9 + local.tee $1 + local.get $1 local.get $0 f64.mul f64.add @@ -8020,36 +8002,36 @@ f64.const 1 local.get $7 f64.copysign - local.tee $4 + local.tee $8 local.get $7 f64.add - local.tee $1 - local.get $4 - local.get $1 + local.tee $9 + local.get $8 + local.get $9 f64.sub local.get $7 f64.add - local.get $9 + local.get $1 local.get $7 f64.sub - local.get $9 + local.get $1 local.get $0 f64.mul f64.add f64.add f64.add - local.get $4 + local.get $8 f64.sub - local.tee $7 + local.tee $0 f64.const 0 f64.eq if (result f64) - local.get $5 + local.get $2 i64.const -9223372036854775808 i64.and f64.reinterpret_i64 else - local.get $7 + local.get $0 end else local.get $7 @@ -8059,7 +8041,7 @@ end br $~lib/util/math/exp_inline|inlined.0 end - local.get $5 + local.get $4 f64.reinterpret_i64 local.tee $1 local.get $1 @@ -8089,11 +8071,11 @@ ) (func $~lib/math/NativeMathf.pow (param $0 f32) (param $1 f32) (result f32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i64) (local $6 i32) - (local $7 f64) + (local $7 i32) (local $8 f64) local.get $1 f32.abs @@ -8150,14 +8132,14 @@ block $~lib/util/math/powf_lut|inlined.0 (result f32) local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $7 i32.const 1 i32.shl i32.const 1 i32.sub i32.const -16777217 i32.ge_u - local.tee $3 + local.tee $6 local.get $0 i32.reinterpret_f32 local.tee $2 @@ -8167,10 +8149,10 @@ i32.ge_u i32.or if - local.get $3 + local.get $6 if f32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl i32.eqz @@ -8185,8 +8167,7 @@ local.get $0 local.get $1 f32.add - i32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl i32.const -16777216 @@ -8196,7 +8177,7 @@ i32.shl i32.const -16777216 i32.gt_u - select + i32.or br_if $~lib/util/math/powf_lut|inlined.0 drop f32.const nan:0x400000 @@ -8208,7 +8189,7 @@ br_if $~lib/util/math/powf_lut|inlined.0 drop f32.const 0 - local.get $4 + local.get $7 i32.const 31 i32.shr_u i32.eqz @@ -8246,7 +8227,7 @@ if (result i32) block $~lib/util/math/checkintf|inlined.0 (result i32) i32.const 0 - local.get $4 + local.get $7 i32.const 23 i32.shr_u i32.const 255 @@ -8271,13 +8252,13 @@ local.tee $2 i32.const 1 i32.sub - local.get $4 + local.get $7 i32.and br_if $~lib/util/math/checkintf|inlined.0 drop i32.const 1 local.get $2 - local.get $4 + local.get $7 i32.and br_if $~lib/util/math/checkintf|inlined.0 drop @@ -8292,7 +8273,7 @@ local.tee $0 f32.div local.get $0 - local.get $4 + local.get $7 i32.const 31 i32.shr_u select @@ -8304,8 +8285,7 @@ if block $~lib/util/math/checkintf|inlined.1 (result i32) i32.const 0 - local.get $4 - local.tee $3 + local.get $7 i32.const 23 i32.shr_u i32.const 255 @@ -8330,13 +8310,13 @@ local.tee $4 i32.const 1 i32.sub - local.get $3 + local.get $7 i32.and br_if $~lib/util/math/checkintf|inlined.1 drop i32.const 1 - local.get $3 local.get $4 + local.get $7 i32.and br_if $~lib/util/math/checkintf|inlined.1 drop @@ -8359,7 +8339,7 @@ i32.const 1 i32.eq select - local.set $6 + local.set $4 local.get $2 i32.const 2147483647 i32.and @@ -8386,14 +8366,14 @@ local.get $2 i32.const 1060306944 i32.sub - local.tee $4 + local.tee $2 i32.const -8388608 i32.and - local.tee $3 + local.tee $6 i32.sub f32.reinterpret_i32 f64.promote_f32 - local.get $4 + local.get $2 i32.const 19 i32.shr_u i32.const 15 @@ -8402,48 +8382,48 @@ i32.shl i32.const 10016 i32.add - local.tee $4 + local.tee $2 f64.load f64.mul f64.const 1 f64.sub - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $8 local.get $1 f64.promote_f32 - local.get $8 + local.get $3 f64.const 0.288457581109214 f64.mul f64.const -0.36092606229713164 f64.add - local.get $7 - local.get $7 + local.get $8 + local.get $8 f64.mul f64.mul - local.get $8 + local.get $3 f64.const 1.4426950408774342 f64.mul - local.get $4 + local.get $2 f64.load offset=8 - local.get $3 + local.get $6 i32.const 23 i32.shr_s f64.convert_i32_s f64.add f64.add - local.get $8 + local.get $3 f64.const 0.480898481472577 f64.mul f64.const -0.7213474675006291 f64.add - local.get $7 + local.get $8 f64.mul f64.add f64.add f64.mul - local.tee $8 + local.tee $3 i64.reinterpret_f64 i64.const 47 i64.shr_u @@ -8454,50 +8434,50 @@ if f32.const -1584563250285286751870879e5 f32.const 1584563250285286751870879e5 - local.get $6 + local.get $4 select f32.const 1584563250285286751870879e5 f32.mul - local.get $8 + local.get $3 f64.const 127.99999995700433 f64.gt br_if $~lib/util/math/powf_lut|inlined.0 drop f32.const -2.524354896707238e-29 f32.const 2.524354896707238e-29 - local.get $6 + local.get $4 select f32.const 2.524354896707238e-29 f32.mul - local.get $8 + local.get $3 f64.const -150 f64.le br_if $~lib/util/math/powf_lut|inlined.0 drop end - local.get $8 + local.get $3 f64.const 211106232532992 f64.add - local.tee $7 + local.tee $8 i64.reinterpret_f64 local.set $5 + local.get $3 local.get $8 - local.get $7 f64.const 211106232532992 f64.sub f64.sub - local.tee $8 + local.tee $3 f64.const 0.6931471806916203 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.05550361559341535 f64.mul f64.const 0.2402284522445722 f64.add - local.get $8 - local.get $8 + local.get $3 + local.get $3 f64.mul f64.mul f64.add @@ -8510,7 +8490,7 @@ i32.const 7712 i32.add i64.load - local.get $6 + local.get $4 i64.extend_i32_u local.get $5 i64.add @@ -8720,23 +8700,22 @@ (local $2 i64) (local $3 i64) (local $4 i64) - (local $5 i64) + (local $5 i32) (local $6 i32) - (local $7 f64) - (local $8 i32) + (local $7 i64) + (local $8 f64) local.get $1 i64.reinterpret_f64 - local.tee $4 + local.tee $7 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $5 - i32.const 1 - local.get $1 - local.get $1 - f64.ne - i32.const 1 + local.set $4 + local.get $7 + i64.const 1 + i64.shl + i64.eqz local.get $0 i64.reinterpret_f64 local.tee $2 @@ -8747,12 +8726,11 @@ local.tee $3 i64.const 2047 i64.eq - local.get $4 - i64.const 1 - i64.shl - i64.eqz - select - select + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if local.get $0 local.get $1 @@ -8774,7 +8752,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.set $8 + local.set $6 local.get $3 i64.eqz if (result i64) @@ -8797,34 +8775,34 @@ i64.or end local.set $2 - local.get $5 + local.get $4 i64.eqz if (result i64) - local.get $4 + local.get $7 i64.const 1 - local.get $5 local.get $4 + local.get $7 i64.const 12 i64.shl i64.clz i64.sub - local.tee $5 + local.tee $4 i64.sub i64.shl else - local.get $4 + local.get $7 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end - local.set $4 + local.set $7 block $do-break|0 local.get $3 - local.get $5 + local.get $4 i64.lt_s if - local.get $5 + local.get $4 local.get $3 i64.const 1 i64.add @@ -8835,19 +8813,19 @@ end loop $while-continue|1 local.get $3 - local.get $5 + local.get $4 i64.gt_s if local.get $2 - local.get $4 + local.get $7 i64.ge_u if (result i64) - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 local.get $2 - local.get $4 + local.get $7 i64.sub else local.get $2 @@ -8855,10 +8833,10 @@ i64.const 1 i64.shl local.set $2 - local.get $6 + local.get $5 i32.const 1 i32.shl - local.set $6 + local.set $5 local.get $3 i64.const 1 i64.sub @@ -8867,15 +8845,15 @@ end end local.get $2 - local.get $4 + local.get $7 i64.ge_u if - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 local.get $2 - local.get $4 + local.get $7 i64.sub local.set $2 end @@ -8890,79 +8868,71 @@ i64.const 11 i64.shl i64.clz - local.tee $4 + local.tee $7 i64.sub local.set $3 local.get $2 - local.get $4 + local.get $7 i64.shl local.set $2 end end - local.get $1 - f64.abs - local.set $1 + local.get $2 + i64.const 4503599627370496 + i64.sub + local.get $3 + i64.const 52 + i64.shl + i64.or + local.get $2 + i64.const 1 + local.get $3 + i64.sub + i64.shr_u local.get $3 i64.const 0 i64.gt_s - if (result i64) - local.get $2 - i64.const 4503599627370496 - i64.sub - local.get $3 - i64.const 52 - i64.shl - i64.or - else - local.get $2 - i64.const 1 - local.get $3 - i64.sub - i64.shr_u - end + select f64.reinterpret_i64 local.tee $0 local.get $0 f64.add - local.set $7 + local.set $8 local.get $0 local.get $1 + f64.abs + local.tee $1 f64.sub local.get $0 local.get $3 - local.get $5 + local.get $4 i64.eq if (result i32) i32.const 1 else local.get $5 + i32.const 1 + i32.and + local.get $1 + local.get $8 + f64.eq + i32.and + local.get $1 + local.get $8 + f64.lt + i32.or + local.get $4 local.get $3 i64.const 1 i64.add i64.eq - if (result i32) - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 0 - local.get $1 - local.get $7 - f64.eq - select - local.get $1 - local.get $7 - f64.lt - select - else - i32.const 0 - end + i32.and end select local.tee $0 f64.neg local.get $0 - local.get $8 + local.get $6 select ) (func $~lib/math/NativeMathf.rem (param $0 f32) (param $1 f32) (result f32) @@ -8971,16 +8941,16 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - (local $8 i32) + (local $7 i32) + (local $8 f32) local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $7 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $5 + local.set $4 i32.const 1 local.get $1 local.get $1 @@ -8996,7 +8966,7 @@ i32.const 255 i32.eq i32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl select @@ -9021,7 +8991,7 @@ local.get $2 i32.const 31 i32.shr_u - local.set $8 + local.set $6 local.get $3 if (result i32) local.get $2 @@ -9043,33 +9013,33 @@ i32.shl end local.set $2 - local.get $5 + local.get $4 if (result i32) - local.get $4 + local.get $7 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $4 + local.get $7 i32.const 1 - local.get $5 local.get $4 + local.get $7 i32.const 9 i32.shl i32.clz i32.sub - local.tee $5 + local.tee $4 i32.sub i32.shl end - local.set $4 + local.set $7 block $do-break|0 local.get $3 - local.get $5 + local.get $4 i32.lt_s if - local.get $5 + local.get $4 local.get $3 i32.const 1 i32.add @@ -9080,19 +9050,19 @@ end loop $while-continue|1 local.get $3 - local.get $5 + local.get $4 i32.gt_s if local.get $2 - local.get $4 + local.get $7 i32.ge_u if (result i32) - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 local.get $2 - local.get $4 + local.get $7 i32.sub else local.get $2 @@ -9100,10 +9070,10 @@ i32.const 1 i32.shl local.set $2 - local.get $6 + local.get $5 i32.const 1 i32.shl - local.set $6 + local.set $5 local.get $3 i32.const 1 i32.sub @@ -9112,15 +9082,15 @@ end end local.get $2 - local.get $4 + local.get $7 i32.ge_u if - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 local.get $2 - local.get $4 + local.get $7 i32.sub local.set $2 end @@ -9131,11 +9101,11 @@ i32.const 8 i32.shl i32.clz - local.tee $4 + local.tee $7 i32.sub local.set $3 local.get $2 - local.get $4 + local.get $7 i32.shl local.set $2 else @@ -9143,80 +9113,72 @@ local.set $3 end end - local.get $1 - f32.abs - local.set $1 + local.get $2 + i32.const 8388608 + i32.sub + local.get $3 + i32.const 23 + i32.shl + i32.or + local.get $2 + i32.const 1 + local.get $3 + i32.sub + i32.shr_u local.get $3 i32.const 0 i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 - i32.sub - local.get $3 - i32.const 23 - i32.shl - i32.or - else - local.get $2 - i32.const 1 - local.get $3 - i32.sub - i32.shr_u - end + select f32.reinterpret_i32 local.tee $0 local.get $0 f32.add - local.set $7 + local.set $8 local.get $0 local.get $1 + f32.abs + local.tee $1 f32.sub local.get $0 local.get $3 - local.get $5 + local.get $4 i32.eq if (result i32) i32.const 1 else local.get $5 + i32.const 1 + i32.and + local.get $1 + local.get $8 + f32.eq + i32.and + local.get $1 + local.get $8 + f32.lt + i32.or + local.get $4 local.get $3 i32.const 1 i32.add i32.eq - if (result i32) - i32.const 1 - local.get $6 - i32.const 1 - i32.and - i32.const 0 - local.get $1 - local.get $7 - f32.eq - select - local.get $1 - local.get $7 - f32.lt - select - else - i32.const 0 - end + i32.and end select local.tee $0 f32.neg local.get $0 - local.get $8 + local.get $6 select ) (func $~lib/math/NativeMath.sin (param $0 f64) (result f64) (local $1 f64) (local $2 i64) (local $3 f64) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f64) (local $8 f64) (local $9 f64) local.get $0 @@ -9225,18 +9187,18 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 31 i32.shr_u local.set $6 - local.get $5 + local.get $4 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1072243195 i32.le_u if - local.get $5 + local.get $4 i32.const 1045430272 i32.lt_u if @@ -9247,12 +9209,12 @@ local.get $0 local.get $0 f64.mul - local.tee $3 + local.tee $1 local.get $0 f64.mul - local.get $3 - local.get $3 - local.get $3 + local.get $1 + local.get $1 + local.get $1 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -9260,12 +9222,12 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $3 - local.get $3 - local.get $3 + local.get $1 + local.get $1 + local.get $1 f64.mul f64.mul - local.get $3 + local.get $1 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 @@ -9279,7 +9241,7 @@ f64.add return end - local.get $5 + local.get $4 i32.const 2146435072 i32.ge_u if @@ -9295,26 +9257,26 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $7 + local.tee $5 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $5 + local.set $4 local.get $6 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $3 + local.set $0 i32.const -1 - local.set $5 - local.get $7 + local.set $4 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -9322,14 +9284,14 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $3 + local.get $0 f64.const 6.077100506303966e-11 f64.add - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.add local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -9339,13 +9301,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $3 - local.get $7 + local.set $0 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $3 - local.get $3 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -9353,14 +9315,14 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $3 + local.get $0 f64.const 6.077100506303966e-11 f64.sub - local.tee $3 + local.tee $1 f64.const 2.0222662487959506e-21 f64.sub local.set $0 - local.get $3 + local.get $1 local.get $0 f64.sub f64.const 2.0222662487959506e-21 @@ -9370,28 +9332,28 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $5 + local.get $4 br $~lib/math/rempio2|inlined.1 end - local.get $7 + local.get $5 i32.const 1094263291 i32.lt_u if - local.get $7 + local.get $5 i32.const 20 i32.shr_u - local.tee $6 + local.tee $4 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $4 + local.tee $7 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $4 + local.get $7 f64.const 6.077100506506192e-11 f64.mul local.tee $3 @@ -9409,12 +9371,12 @@ i32.const 16 i32.gt_u if - local.get $4 + local.get $7 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 6.077100506303966e-11 f64.mul local.tee $1 @@ -9425,7 +9387,7 @@ f64.sub f64.sub local.set $3 - local.get $6 + local.get $4 local.get $0 local.get $3 f64.sub @@ -9442,12 +9404,12 @@ i32.const 49 i32.gt_u if (result f64) - local.get $4 + local.get $7 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 2.0222662487111665e-21 f64.mul local.tee $1 @@ -9474,25 +9436,25 @@ local.get $3 f64.sub global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $7 i32.trunc_f64_s br $~lib/math/rempio2|inlined.1 end i32.const 0 local.get $2 call $~lib/math/pio2_large_quot - local.tee $5 + local.tee $4 i32.sub - local.get $5 + local.get $4 local.get $6 select end - local.set $6 + local.set $4 global.get $~lib/math/rempio2_y0 local.set $3 global.get $~lib/math/rempio2_y1 - local.set $4 - local.get $6 + local.set $7 + local.get $4 i32.const 1 i32.and if (result f64) @@ -9543,7 +9505,7 @@ f64.add f64.mul local.get $3 - local.get $4 + local.get $7 f64.mul f64.sub f64.add @@ -9558,7 +9520,7 @@ local.set $1 local.get $3 local.get $0 - local.get $4 + local.get $7 f64.const 0.5 f64.mul local.get $1 @@ -9586,7 +9548,7 @@ f64.mul f64.sub f64.mul - local.get $4 + local.get $7 f64.sub local.get $1 f64.const -0.16666666666666632 @@ -9597,36 +9559,36 @@ local.tee $0 f64.neg local.get $0 - local.get $6 + local.get $4 i32.const 2 i32.and select ) (func $~lib/math/NativeMathf.sin (param $0 f32) (result f32) (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 f64) - (local $9 f64) + (local $2 f64) + (local $3 f64) + (local $4 f64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) block $folding-inner0 local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $6 i32.const 31 i32.shr_u - local.set $5 - local.get $1 + local.set $1 + local.get $6 i32.const 2147483647 i32.and - local.tee $2 + local.tee $6 i32.const 1061752794 i32.le_u if - local.get $2 + local.get $6 i32.const 964689920 i32.lt_u if @@ -9635,49 +9597,49 @@ end local.get $0 f64.promote_f32 - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $7 - local.get $9 + local.tee $4 + local.get $2 f64.mul - local.set $8 + local.set $3 br $folding-inner0 end - local.get $2 + local.get $6 i32.const 1081824209 i32.le_u if - local.get $2 + local.get $6 i32.const 1075235811 i32.le_u if - local.get $5 + local.get $1 if (result f32) local.get $0 f64.promote_f32 f64.const 1.5707963267948966 f64.add - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9691,26 +9653,26 @@ f64.promote_f32 f64.const 1.5707963267948966 f64.sub - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9723,58 +9685,58 @@ end local.get $0 f64.promote_f32 - local.tee $8 + local.tee $2 f64.const 3.141592653589793 f64.add - local.get $8 + local.get $2 f64.const 3.141592653589793 f64.sub - local.get $5 + local.get $1 select f64.neg - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $7 - local.get $9 + local.tee $4 + local.get $2 f64.mul - local.set $8 + local.set $3 br $folding-inner0 end - local.get $2 + local.get $6 i32.const 1088565717 i32.le_u if - local.get $2 + local.get $6 i32.const 1085271519 i32.le_u if - local.get $5 + local.get $1 if (result f32) local.get $0 f64.promote_f32 f64.const 4.71238898038469 f64.add - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9787,26 +9749,26 @@ f64.promote_f32 f64.const 4.71238898038469 f64.sub - local.tee $8 - local.get $8 + local.tee $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9820,24 +9782,24 @@ end local.get $0 f64.promote_f32 - local.tee $8 + local.tee $2 f64.const 6.283185307179586 f64.add - local.get $8 + local.get $2 f64.const 6.283185307179586 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $7 - local.get $9 + local.tee $4 + local.get $2 f64.mul - local.set $8 + local.set $3 br $folding-inner0 end - local.get $2 + local.get $6 i32.const 2139095040 i32.ge_u if @@ -9847,150 +9809,150 @@ return end block $~lib/math/rempio2f|inlined.1 (result i32) - local.get $2 - local.tee $1 + local.get $6 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $8 + local.tee $2 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $9 - local.get $8 - local.get $9 + local.set $3 + local.get $2 + local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $9 + local.get $3 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $9 + local.get $3 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.1 end - local.get $1 + local.get $6 i32.const 23 i32.shr_s i32.const 152 i32.sub - local.tee $2 + local.tee $7 i32.const 63 i32.and i64.extend_i32_s - local.set $6 + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $9 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $1 + local.get $6 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s - local.tee $4 - local.get $2 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $2 + local.tee $5 + local.get $7 i64.load - local.get $6 + local.get $8 i64.shl - local.get $2 - i64.load offset=8 - local.tee $3 + local.get $9 i64.const 64 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or i64.mul - local.get $6 + local.get $8 i64.const 32 i64.gt_u if (result i64) - local.get $3 - local.get $6 + local.get $9 + local.get $8 i64.const 32 i64.sub i64.shl - local.get $2 + local.get $7 i64.load offset=16 i64.const 96 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or else - local.get $3 + local.get $9 i64.const 32 - local.get $6 + local.get $8 i64.sub i64.shr_u end - local.get $4 + local.get $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $5 i64.const 2 i64.shl - local.tee $6 + local.tee $8 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y i32.const 0 - local.get $4 + local.get $5 i64.const 62 i64.shr_u - local.get $6 + local.get $8 i64.const 63 i64.shr_u i64.add i32.wrap_i64 - local.tee $1 + local.tee $6 i32.sub + local.get $6 local.get $1 - local.get $5 select end local.set $1 global.get $~lib/math/rempio2f_y - local.set $7 + local.set $2 local.get $1 i32.const 1 i32.and if (result f32) - local.get $7 - local.get $7 + local.get $2 + local.get $2 f64.mul - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.set $8 - local.get $9 + local.set $3 + local.get $2 f64.const -0.499999997251031 f64.mul f64.const 1 f64.add - local.get $8 + local.get $3 f64.const 0.04166662332373906 f64.mul f64.add - local.get $8 - local.get $9 + local.get $3 + local.get $2 f64.mul - local.get $9 + local.get $2 f64.const 2.439044879627741e-05 f64.mul f64.const -0.001388676377460993 @@ -9999,27 +9961,27 @@ f64.add f32.demote_f64 else - local.get $7 - local.get $7 - local.get $7 + local.get $2 + local.get $2 + local.get $2 f64.mul - local.tee $9 - local.get $7 + local.tee $3 + local.get $2 f64.mul - local.tee $8 - local.get $9 + local.tee $2 + local.get $3 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $8 - local.get $9 - local.get $9 + local.get $2 + local.get $3 + local.get $3 f64.mul f64.mul - local.get $9 + local.get $3 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -10037,21 +9999,21 @@ select return end - local.get $9 - local.get $8 - local.get $7 + local.get $2 + local.get $3 + local.get $4 f64.const 0.008333329385889463 f64.mul f64.const -0.16666666641626524 f64.add f64.mul f64.add - local.get $8 - local.get $7 - local.get $7 + local.get $3 + local.get $4 + local.get $4 f64.mul f64.mul - local.get $7 + local.get $4 f64.const 2.718311493989822e-06 f64.mul f64.const -1.9839334836096632e-04 @@ -10062,50 +10024,50 @@ ) (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) - (local $4 f64) - (local $5 i32) - (local $6 i64) + (local $4 i32) + (local $5 i64) + (local $6 f64) block $__inlined_func$~lib/math/NativeMath.sinh (result f64) local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $6 + local.tee $5 f64.reinterpret_i64 - local.set $3 + local.set $6 f64.const 0.5 local.get $0 f64.copysign - local.set $4 - local.get $6 + local.set $3 + local.get $5 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 1082535490 i32.lt_u if - local.get $3 + local.get $6 call $~lib/math/NativeMath.expm1 - local.set $3 - local.get $5 + local.set $6 + local.get $4 i32.const 1072693248 i32.lt_u if local.get $0 - local.get $5 + local.get $4 i32.const 1045430272 i32.lt_u br_if $__inlined_func$~lib/math/NativeMath.sinh drop - local.get $4 - local.get $3 local.get $3 + local.get $6 + local.get $6 f64.add - local.get $3 - local.get $3 + local.get $6 + local.get $6 f64.mul - local.get $3 + local.get $6 f64.const 1 f64.add f64.div @@ -10113,10 +10075,10 @@ f64.mul br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $4 - local.get $3 - local.get $3 local.get $3 + local.get $6 + local.get $6 + local.get $6 f64.const 1 f64.add f64.div @@ -10124,12 +10086,12 @@ f64.mul br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $3 + local.get $6 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp - local.get $4 - local.get $4 + local.get $3 + local.get $3 f64.add f64.const 2247116418577894884661631e283 f64.mul @@ -10152,45 +10114,45 @@ ) (func $std/math/test_sinhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 f32) - (local $4 f32) - (local $5 i32) + (local $4 i32) + (local $5 f32) block $__inlined_func$~lib/math/NativeMathf.sinh (result f32) local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 f32.reinterpret_i32 - local.set $3 + local.set $5 f32.const 0.5 local.get $0 f32.copysign - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 1118925335 i32.lt_u if - local.get $3 - call $~lib/math/NativeMathf.expm1 - local.set $3 local.get $5 + call $~lib/math/NativeMathf.expm1 + local.set $5 + local.get $4 i32.const 1065353216 i32.lt_u if local.get $0 - local.get $5 + local.get $4 i32.const 964689920 i32.lt_u br_if $__inlined_func$~lib/math/NativeMathf.sinh drop - local.get $4 - local.get $3 local.get $3 + local.get $5 + local.get $5 f32.add - local.get $3 - local.get $3 + local.get $5 + local.get $5 f32.mul - local.get $3 + local.get $5 f32.const 1 f32.add f32.div @@ -10198,10 +10160,10 @@ f32.mul br $__inlined_func$~lib/math/NativeMathf.sinh end - local.get $4 - local.get $3 - local.get $3 local.get $3 + local.get $5 + local.get $5 + local.get $5 f32.const 1 f32.add f32.div @@ -10209,12 +10171,12 @@ f32.mul br $__inlined_func$~lib/math/NativeMathf.sinh end - local.get $3 + local.get $5 f32.const 162.88958740234375 f32.sub call $~lib/math/NativeMathf.exp - local.get $4 - local.get $4 + local.get $3 + local.get $3 f32.add f32.const 1661534994731144841129758e11 f32.mul @@ -10227,25 +10189,25 @@ call $std/math/check ) (func $~lib/math/tan_kern (param $0 f64) (param $1 f64) (param $2 i32) (result f64) - (local $3 f64) - (local $4 f64) + (local $3 i32) + (local $4 i32) (local $5 f64) - (local $6 i32) - (local $7 i32) + (local $6 f64) + (local $7 f64) local.get $0 i64.reinterpret_f64 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $6 + local.tee $3 i32.const 2147483647 i32.and i32.const 1072010280 i32.ge_u - local.tee $7 + local.tee $4 if f64.const 0.7853981633974483 - local.get $6 + local.get $3 i32.const 0 i32.lt_s if (result f64) @@ -10269,22 +10231,22 @@ local.get $0 local.get $0 f64.mul - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f64.mul - local.set $3 + local.set $6 local.get $0 local.get $1 - local.get $4 - local.get $4 + local.get $5 + local.get $5 local.get $0 f64.mul - local.tee $5 - local.get $3 - local.get $3 - local.get $3 - local.get $3 - local.get $3 + local.tee $7 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + local.get $6 f64.const -1.8558637485527546e-05 f64.mul f64.const 7.817944429395571e-05 @@ -10301,12 +10263,12 @@ f64.mul f64.const 0.13333333333320124 f64.add - local.get $4 - local.get $3 - local.get $3 - local.get $3 - local.get $3 - local.get $3 + local.get $5 + local.get $6 + local.get $6 + local.get $6 + local.get $6 + local.get $6 f64.const 2.590730518636337e-05 f64.mul f64.const 7.140724913826082e-05 @@ -10330,17 +10292,17 @@ f64.add f64.mul f64.add - local.get $5 + local.get $7 f64.const 0.3333333333333341 f64.mul f64.add - local.tee $3 + local.tee $1 f64.add - local.set $1 - local.get $7 + local.set $5 + local.get $4 if f64.const 1 - local.get $6 + local.get $3 i32.const 30 i32.shr_s i32.const 2 @@ -10349,16 +10311,16 @@ f64.sub local.get $2 f64.convert_i32_s - local.tee $4 + local.tee $6 local.get $0 - local.get $1 - local.get $1 + local.get $5 + local.get $5 f64.mul - local.get $1 - local.get $4 + local.get $5 + local.get $6 f64.add f64.div - local.get $3 + local.get $1 f64.sub f64.sub f64.const 2 @@ -10371,32 +10333,32 @@ i32.const 1 i32.eq if - local.get $1 + local.get $5 return end f64.const -1 - local.get $1 + local.get $5 f64.div - local.tee $5 + local.tee $6 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $4 + local.tee $7 + local.get $6 + local.get $7 local.get $5 - local.get $4 - local.get $1 i64.reinterpret_f64 i64.const -4294967296 i64.and f64.reinterpret_i64 - local.tee $1 + local.tee $5 f64.mul f64.const 1 f64.add - local.get $4 - local.get $3 + local.get $7 local.get $1 + local.get $5 local.get $0 f64.sub f64.sub @@ -10408,20 +10370,21 @@ (func $~lib/math/NativeMath.tan (param $0 f64) (result f64) (local $1 f64) (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 f64) - (local $7 f64) + (local $3 i64) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) local.get $0 i64.reinterpret_f64 - local.tee $4 + local.tee $3 i64.const 32 i64.shr_u i32.wrap_i64 local.tee $2 i32.const 31 i32.shr_u + local.set $6 local.get $2 i32.const 2147483647 i32.and @@ -10451,34 +10414,33 @@ f64.sub return end - local.set $2 block $~lib/math/rempio2|inlined.2 - local.get $4 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $5 + local.tee $7 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $3 - local.get $2 + local.set $2 + local.get $6 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $1 + local.set $0 i32.const -1 - local.set $3 - local.get $5 + local.set $2 + local.get $7 i32.const 1073291771 i32.ne if (result f64) - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -10486,7 +10448,7 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $1 + local.get $0 f64.const 6.077100506303966e-11 f64.add local.tee $1 @@ -10503,13 +10465,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $1 - local.get $5 + local.set $0 + local.get $7 i32.const 1073291771 i32.ne if (result f64) - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -10517,7 +10479,7 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $1 + local.get $0 f64.const 6.077100506303966e-11 f64.sub local.tee $1 @@ -10536,28 +10498,28 @@ global.set $~lib/math/rempio2_y1 br $~lib/math/rempio2|inlined.2 end - local.get $5 + local.get $7 i32.const 1094263291 i32.lt_u if - local.get $5 + local.get $7 i32.const 20 i32.shr_u - local.tee $3 + local.tee $2 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $6 + local.tee $4 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $6 + local.get $4 f64.const 6.077100506506192e-11 f64.mul - local.tee $7 + local.tee $5 f64.sub local.tee $1 i64.reinterpret_f64 @@ -10572,25 +10534,25 @@ i32.const 16 i32.gt_u if - local.get $6 + local.get $4 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $6 + local.get $4 f64.const 6.077100506303966e-11 f64.mul - local.tee $7 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $7 + local.get $1 f64.sub f64.sub - local.set $7 - local.get $3 + local.set $5 + local.get $2 local.get $0 - local.get $7 + local.get $5 f64.sub local.tee $1 i64.reinterpret_f64 @@ -10605,24 +10567,24 @@ i32.const 49 i32.gt_u if (result f64) - local.get $6 + local.get $4 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $6 + local.get $4 f64.const 2.0222662487111665e-21 f64.mul - local.tee $7 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $7 + local.get $1 f64.sub f64.sub - local.set $7 + local.set $5 local.get $0 - local.get $7 + local.get $5 f64.sub else local.get $1 @@ -10634,28 +10596,28 @@ local.get $0 local.get $1 f64.sub - local.get $7 + local.get $5 f64.sub global.set $~lib/math/rempio2_y1 - local.get $6 + local.get $4 i32.trunc_f64_s - local.set $3 + local.set $2 br $~lib/math/rempio2|inlined.2 end i32.const 0 - local.get $4 + local.get $3 call $~lib/math/pio2_large_quot - local.tee $3 + local.tee $2 i32.sub - local.get $3 local.get $2 + local.get $6 select - local.set $3 + local.set $2 end global.get $~lib/math/rempio2_y0 global.get $~lib/math/rempio2_y1 i32.const 1 - local.get $3 + local.get $2 i32.const 1 i32.and i32.const 1 @@ -10665,30 +10627,30 @@ ) (func $~lib/math/NativeMathf.tan (param $0 f32) (result f32) (local $1 i32) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) - (local $6 i64) - (local $7 f64) - (local $8 f64) - (local $9 f64) + (local $2 f64) + (local $3 f64) + (local $4 f64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) block $folding-inner1 block $folding-inner0 local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $6 i32.const 31 i32.shr_u - local.set $5 - local.get $1 + local.set $1 + local.get $6 i32.const 2147483647 i32.and - local.tee $2 + local.tee $6 i32.const 1061752794 i32.le_u if - local.get $2 + local.get $6 i32.const 964689920 i32.lt_u if @@ -10697,112 +10659,112 @@ end local.get $0 f64.promote_f32 - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner0 end - local.get $2 + local.get $6 i32.const 1081824209 i32.le_u if - local.get $2 + local.get $6 i32.const 1075235811 i32.le_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 1.5707963267948966 f64.add - local.get $9 + local.get $2 f64.const 1.5707963267948966 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner1 else local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 3.141592653589793 f64.add - local.get $9 + local.get $2 f64.const 3.141592653589793 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner0 end unreachable end - local.get $2 + local.get $6 i32.const 1088565717 i32.le_u if - local.get $2 + local.get $6 i32.const 1085271519 i32.le_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 4.71238898038469 f64.add - local.get $9 + local.get $2 f64.const 4.71238898038469 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner1 else local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 6.283185307179586 f64.add - local.get $9 + local.get $2 f64.const 6.283185307179586 f64.sub - local.get $5 + local.get $1 select - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 br $folding-inner0 end unreachable end - local.get $2 + local.get $6 i32.const 2139095040 i32.ge_u if @@ -10812,155 +10774,155 @@ return end block $~lib/math/rempio2f|inlined.2 (result i32) - local.get $2 - local.tee $1 + local.get $6 i32.const 1305022427 i32.lt_u if local.get $0 f64.promote_f32 - local.tee $9 + local.tee $2 f64.const 0.6366197723675814 f64.mul f64.nearest - local.set $7 - local.get $9 - local.get $7 + local.set $3 + local.get $2 + local.get $3 f64.const 1.5707963109016418 f64.mul f64.sub - local.get $7 + local.get $3 f64.const 1.5893254773528196e-08 f64.mul f64.sub global.set $~lib/math/rempio2f_y - local.get $7 + local.get $3 i32.trunc_f64_s br $~lib/math/rempio2f|inlined.2 end - local.get $1 + local.get $6 i32.const 23 i32.shr_s i32.const 152 i32.sub - local.tee $2 + local.tee $7 i32.const 63 i32.and i64.extend_i32_s - local.set $6 + local.set $8 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 3 + i32.shl + i32.const 5632 + i32.add + local.tee $7 + i64.load offset=8 + local.set $9 f64.const 8.515303950216386e-20 local.get $0 f64.promote_f32 f64.copysign - local.get $1 + local.get $6 i32.const 8388607 i32.and i32.const 8388608 i32.or i64.extend_i32_s - local.tee $4 - local.get $2 - i32.const 6 - i32.shr_s - i32.const 3 - i32.shl - i32.const 5632 - i32.add - local.tee $2 + local.tee $5 + local.get $7 i64.load - local.get $6 + local.get $8 i64.shl - local.get $2 - i64.load offset=8 - local.tee $3 + local.get $9 i64.const 64 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or i64.mul - local.get $6 + local.get $8 i64.const 32 i64.gt_u if (result i64) - local.get $3 - local.get $6 + local.get $9 + local.get $8 i64.const 32 i64.sub i64.shl - local.get $2 + local.get $7 i64.load offset=16 i64.const 96 - local.get $6 + local.get $8 i64.sub i64.shr_u i64.or else - local.get $3 + local.get $9 i64.const 32 - local.get $6 + local.get $8 i64.sub i64.shr_u end - local.get $4 + local.get $5 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $4 + local.tee $5 i64.const 2 i64.shl - local.tee $6 + local.tee $8 f64.convert_i64_s f64.mul global.set $~lib/math/rempio2f_y i32.const 0 - local.get $4 + local.get $5 i64.const 62 i64.shr_u - local.get $6 + local.get $8 i64.const 63 i64.shr_u i64.add i32.wrap_i64 - local.tee $1 + local.tee $6 i32.sub + local.get $6 local.get $1 - local.get $5 select end local.set $1 global.get $~lib/math/rempio2f_y - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f64.mul - local.tee $8 - local.get $8 + local.tee $3 + local.get $3 f64.mul - local.set $7 + local.set $4 f64.const -1 - local.get $9 - local.get $8 - local.get $9 + local.get $2 + local.get $3 + local.get $2 f64.mul - local.tee $9 - local.get $8 + local.tee $2 + local.get $3 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $9 - local.get $7 + local.get $2 + local.get $4 f64.mul - local.get $8 + local.get $3 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $7 - local.get $8 + local.get $4 + local.get $3 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -10969,9 +10931,9 @@ f64.add f64.mul f64.add - local.tee $9 + local.tee $2 f64.div - local.get $9 + local.get $2 local.get $1 i32.const 1 i32.and @@ -10979,28 +10941,28 @@ f32.demote_f64 return end - local.get $9 - local.get $8 - local.get $9 + local.get $2 + local.get $3 + local.get $2 f64.mul - local.tee $9 - local.get $8 + local.tee $2 + local.get $3 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $9 - local.get $7 + local.get $2 + local.get $4 f64.mul - local.get $8 + local.get $3 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $7 - local.get $8 + local.get $4 + local.get $3 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -11013,28 +10975,28 @@ return end f64.const -1 - local.get $9 - local.get $8 - local.get $9 + local.get $2 + local.get $3 + local.get $2 f64.mul - local.tee $9 - local.get $8 + local.tee $2 + local.get $3 f64.const 0.13339200271297674 f64.mul f64.const 0.3333313950307914 f64.add f64.mul f64.add - local.get $9 - local.get $7 + local.get $2 + local.get $4 f64.mul - local.get $8 + local.get $3 f64.const 0.024528318116654728 f64.mul f64.const 0.05338123784456704 f64.add - local.get $7 - local.get $8 + local.get $4 + local.get $3 f64.const 0.009465647849436732 f64.mul f64.const 0.002974357433599673 @@ -11047,38 +11009,38 @@ f32.demote_f64 ) (func $std/math/test_tanh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i64) + (local $3 i32) + (local $4 i64) + (local $5 f64) local.get $0 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and - local.tee $5 + local.tee $4 f64.reinterpret_i64 - local.set $3 - local.get $5 + local.set $5 + local.get $4 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 i32.const 1071748074 i32.gt_u if (result f64) - local.get $4 + local.get $3 i32.const 1077149696 i32.gt_u if (result f64) f64.const 1 f64.const 0 - local.get $3 + local.get $5 f64.div f64.sub else f64.const 1 f64.const 2 - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.add call $~lib/math/NativeMath.expm1 f64.const 2 @@ -11087,36 +11049,36 @@ f64.sub end else - local.get $4 + local.get $3 i32.const 1070618798 i32.gt_u if (result f64) - local.get $3 - local.get $3 + local.get $5 + local.get $5 f64.add call $~lib/math/NativeMath.expm1 - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 f64.const 2 f64.add f64.div else - local.get $4 + local.get $3 i32.const 1048576 i32.ge_u if (result f64) - local.get $3 + local.get $5 f64.const -2 f64.mul call $~lib/math/NativeMath.expm1 - local.tee $3 + local.tee $5 f64.neg - local.get $3 + local.get $5 f64.const 2 f64.add f64.div else - local.get $3 + local.get $5 end end end @@ -11136,33 +11098,33 @@ end ) (func $std/math/test_tanhf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) + (local $3 i32) + (local $4 f32) local.get $0 i32.reinterpret_f32 i32.const 2147483647 i32.and - local.tee $4 + local.tee $3 f32.reinterpret_i32 - local.set $3 - local.get $4 + local.set $4 + local.get $3 i32.const 1057791828 i32.gt_u if (result f32) - local.get $4 + local.get $3 i32.const 1092616192 i32.gt_u if (result f32) f32.const 0 - local.get $3 + local.get $4 f32.div f32.const 1 f32.add else f32.const 1 f32.const 2 - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.add call $~lib/math/NativeMathf.expm1 f32.const 2 @@ -11171,36 +11133,36 @@ f32.sub end else - local.get $4 + local.get $3 i32.const 1048757624 i32.gt_u if (result f32) - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.add call $~lib/math/NativeMathf.expm1 - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f32.const 2 f32.add f32.div else - local.get $4 + local.get $3 i32.const 8388608 i32.ge_u if (result f32) - local.get $3 + local.get $4 f32.const -2 f32.mul call $~lib/math/NativeMathf.expm1 - local.tee $3 + local.tee $4 f32.neg - local.get $3 + local.get $4 f32.const 2 f32.add f32.div else - local.get $3 + local.get $4 end end end @@ -11214,11 +11176,11 @@ (local $1 f64) (local $2 f64) (local $3 i64) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 f64) - (local $8 i32) + (local $8 f64) (local $9 f64) (local $10 f64) local.get $0 @@ -11227,18 +11189,18 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $4 i32.const 31 i32.shr_u local.set $6 - local.get $5 + local.get $4 i32.const 2147483647 i32.and - local.tee $5 + local.tee $4 i32.const 1072243195 i32.le_u if - local.get $5 + local.get $4 i32.const 1044816030 i32.lt_u if @@ -11249,18 +11211,16 @@ return end local.get $0 - local.tee $1 + local.get $0 local.get $0 f64.mul - local.tee $0 - local.set $4 - local.get $1 - local.get $4 - local.get $1 + local.tee $1 + local.tee $2 + local.get $0 f64.mul - local.get $4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 + local.get $2 f64.const 2.7557313707070068e-06 f64.mul f64.const -1.984126982985795e-04 @@ -11268,12 +11228,12 @@ f64.mul f64.const 0.00833333333332249 f64.add - local.get $4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 + local.get $2 f64.mul f64.mul - local.get $4 + local.get $2 f64.const 1.58969099521155e-10 f64.mul f64.const -2.5050760253406863e-08 @@ -11287,7 +11247,7 @@ f64.add global.set $~lib/math/NativeMath.sincos_sin f64.const 1 - local.get $0 + local.get $1 f64.const 0.5 f64.mul local.tee $2 @@ -11298,10 +11258,10 @@ f64.sub local.get $2 f64.sub - local.get $0 - local.get $0 - local.get $0 - local.get $0 + local.get $1 + local.get $1 + local.get $1 + local.get $1 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -11310,14 +11270,14 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.mul - local.tee $4 - local.get $4 + local.tee $2 + local.get $2 f64.mul - local.get $0 - local.get $0 + local.get $1 + local.get $1 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -11328,7 +11288,7 @@ f64.mul f64.add f64.mul - local.get $1 + local.get $0 f64.const 0 f64.mul f64.sub @@ -11337,7 +11297,7 @@ global.set $~lib/math/NativeMath.sincos_cos return end - local.get $5 + local.get $4 i32.const 2139095040 i32.ge_u if @@ -11357,26 +11317,26 @@ i32.wrap_i64 i32.const 2147483647 i32.and - local.tee $8 + local.tee $5 i32.const 1073928572 i32.lt_u if i32.const 1 - local.set $5 + local.set $4 local.get $6 if (result f64) local.get $0 f64.const 1.5707963267341256 f64.add - local.set $1 + local.set $0 i32.const -1 - local.set $5 - local.get $8 + local.set $4 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.add local.tee $0 @@ -11384,7 +11344,7 @@ f64.const 6.077100506506192e-11 f64.add else - local.get $1 + local.get $0 f64.const 6.077100506303966e-11 f64.add local.tee $1 @@ -11401,13 +11361,13 @@ local.get $0 f64.const 1.5707963267341256 f64.sub - local.set $1 - local.get $8 + local.set $0 + local.get $5 i32.const 1073291771 i32.ne if (result f64) - local.get $1 - local.get $1 + local.get $0 + local.get $0 f64.const 6.077100506506192e-11 f64.sub local.tee $0 @@ -11415,7 +11375,7 @@ f64.const 6.077100506506192e-11 f64.sub else - local.get $1 + local.get $0 f64.const 6.077100506303966e-11 f64.sub local.tee $1 @@ -11432,28 +11392,28 @@ local.get $0 global.set $~lib/math/rempio2_y0 global.set $~lib/math/rempio2_y1 - local.get $5 + local.get $4 br $~lib/math/rempio2|inlined.3 end - local.get $8 + local.get $5 i32.const 1094263291 i32.lt_u if - local.get $8 + local.get $5 i32.const 20 i32.shr_u - local.tee $6 + local.tee $4 local.get $0 local.get $0 f64.const 0.6366197723675814 f64.mul f64.nearest - local.tee $4 + local.tee $7 f64.const 1.5707963267341256 f64.mul f64.sub local.tee $0 - local.get $4 + local.get $7 f64.const 6.077100506506192e-11 f64.mul local.tee $1 @@ -11471,23 +11431,23 @@ i32.const 16 i32.gt_u if - local.get $4 + local.get $7 f64.const 2.0222662487959506e-21 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 6.077100506303966e-11 f64.mul - local.tee $2 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $2 + local.get $1 f64.sub f64.sub local.set $1 - local.get $6 + local.get $4 local.get $0 local.get $1 f64.sub @@ -11504,19 +11464,19 @@ i32.const 49 i32.gt_u if (result f64) - local.get $4 + local.get $7 f64.const 8.4784276603689e-32 f64.mul local.get $0 local.get $0 - local.get $4 + local.get $7 f64.const 2.0222662487111665e-21 f64.mul - local.tee $2 + local.tee $1 f64.sub local.tee $0 f64.sub - local.get $2 + local.get $1 f64.sub f64.sub local.set $1 @@ -11536,36 +11496,36 @@ local.get $1 f64.sub global.set $~lib/math/rempio2_y1 - local.get $4 + local.get $7 i32.trunc_f64_s br $~lib/math/rempio2|inlined.3 end i32.const 0 local.get $3 call $~lib/math/pio2_large_quot - local.tee $5 + local.tee $4 i32.sub - local.get $5 + local.get $4 local.get $6 select end - local.set $6 + local.set $4 global.get $~lib/math/rempio2_y0 - local.tee $2 - local.get $2 + local.tee $8 + local.get $8 f64.mul - local.tee $1 + local.tee $9 local.tee $0 - local.get $2 + local.get $8 f64.mul - local.set $4 - local.get $2 + local.set $2 + local.get $8 local.get $0 global.get $~lib/math/rempio2_y1 - local.tee $7 + local.tee $1 f64.const 0.5 f64.mul - local.get $4 + local.get $2 local.get $0 local.get $0 f64.const 2.7557313707070068e-06 @@ -11590,31 +11550,31 @@ f64.mul f64.sub f64.mul - local.get $7 + local.get $1 f64.sub - local.get $4 + local.get $2 f64.const -0.16666666666666632 f64.mul f64.sub f64.sub - local.tee $4 + local.tee $2 local.set $0 f64.const 1 - local.get $1 + local.get $9 f64.const 0.5 f64.mul local.tee $10 f64.sub - local.tee $9 + local.tee $7 f64.const 1 - local.get $9 + local.get $7 f64.sub local.get $10 f64.sub - local.get $1 - local.get $1 - local.get $1 - local.get $1 + local.get $9 + local.get $9 + local.get $9 + local.get $9 f64.const 2.480158728947673e-05 f64.mul f64.const -0.001388888888887411 @@ -11623,14 +11583,14 @@ f64.const 0.0416666666666666 f64.add f64.mul - local.get $1 - local.get $1 - f64.mul - local.tee $9 + local.get $9 local.get $9 f64.mul - local.get $1 - local.get $1 + local.tee $7 + local.get $7 + f64.mul + local.get $9 + local.get $9 f64.const -1.1359647557788195e-11 f64.mul f64.const 2.087572321298175e-09 @@ -11641,24 +11601,24 @@ f64.mul f64.add f64.mul - local.get $2 - local.get $7 + local.get $8 + local.get $1 f64.mul f64.sub f64.add f64.add local.set $1 - local.get $6 + local.get $4 i32.const 1 i32.and if local.get $1 local.set $0 - local.get $4 + local.get $2 f64.neg local.set $1 end - local.get $6 + local.get $4 i32.const 2 i32.and if (result f64) @@ -11701,15 +11661,15 @@ end ) (func $~lib/math/NativeMath.imul (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) + (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 f64) + (local $4 f64) + (local $5 i64) local.get $0 local.get $1 f64.add - local.tee $5 - local.get $5 + local.tee $4 + local.get $4 f64.sub f64.const 0 f64.ne @@ -11719,39 +11679,39 @@ end local.get $0 i64.reinterpret_f64 - local.tee $2 + local.tee $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $3 + local.tee $5 i64.const 1053 i64.le_u if (result i32) local.get $0 i32.trunc_f64_s else - local.get $3 + local.get $5 i64.const 1106 i64.le_u if (result i32) i32.const 0 - local.get $2 + local.get $3 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or - local.get $3 + local.get $5 i64.const 1043 i64.sub i64.shl i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.sub - local.get $4 local.get $2 + local.get $3 i64.const 63 i64.shr_u i32.wrap_i64 @@ -11762,39 +11722,39 @@ end local.get $1 i64.reinterpret_f64 - local.tee $2 + local.tee $3 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $3 + local.tee $5 i64.const 1053 i64.le_u if (result i32) local.get $1 i32.trunc_f64_s else - local.get $3 + local.get $5 i64.const 1106 i64.le_u if (result i32) i32.const 0 - local.get $2 + local.get $3 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or - local.get $3 + local.get $5 i64.const 1043 i64.sub i64.shl i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $2 i32.sub - local.get $4 local.get $2 + local.get $3 i64.const 63 i64.shr_u i32.wrap_i64 @@ -12212,10 +12172,10 @@ (local $0 f64) (local $1 i32) (local $2 i64) - (local $3 i64) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 f32) + (local $5 f32) + (local $6 i64) f64.const 2.718281828459045 global.get $~lib/bindings/Math/E f64.const 0 @@ -18041,10 +18001,9 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 - call $~lib/math/NativeMathf.atan2 f32.const -1.0585895776748657 f32.const -0.22352588176727295 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18056,10 +18015,9 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 - call $~lib/math/NativeMathf.atan2 f32.const 2.686873435974121 f32.const 0.09464472532272339 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18071,10 +18029,9 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 - call $~lib/math/NativeMathf.atan2 f32.const -1.8893001079559326 f32.const -0.21941901743412018 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18086,10 +18043,9 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 - call $~lib/math/NativeMathf.atan2 f32.const -0.9605468511581421 f32.const 0.46015575528144836 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18101,10 +18057,9 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 - call $~lib/math/NativeMathf.atan2 f32.const 1.0919123888015747 f32.const -0.05708503723144531 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18116,10 +18071,9 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 - call $~lib/math/NativeMathf.atan2 f32.const -1.4685084819793701 f32.const 0.19611206650733948 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18131,10 +18085,9 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 - call $~lib/math/NativeMathf.atan2 f32.const 1.5641601085662842 f32.const 0.48143187165260315 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18146,10 +18099,9 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 - call $~lib/math/NativeMathf.atan2 f32.const -0.10281659662723541 f32.const -0.4216274917125702 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18161,10 +18113,9 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 - call $~lib/math/NativeMathf.atan2 f32.const 0.29697975516319275 f32.const 0.2322007566690445 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18176,10 +18127,9 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 - call $~lib/math/NativeMathf.atan2 f32.const -1.5131611824035645 f32.const 0.16620726883411407 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18191,10 +18141,9 @@ end f32.const 0 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18206,10 +18155,9 @@ end f32.const 0 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18221,10 +18169,9 @@ end f32.const 0 f32.const -1 - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18236,10 +18183,9 @@ end f32.const 0 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18251,10 +18197,9 @@ end f32.const 0 f32.const 1 - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18266,10 +18211,9 @@ end f32.const 0 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18281,10 +18225,9 @@ end f32.const -0 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18296,10 +18239,9 @@ end f32.const -0 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18311,10 +18253,9 @@ end f32.const -0 f32.const -1 - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18326,10 +18267,9 @@ end f32.const -0 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18341,10 +18281,9 @@ end f32.const -0 f32.const 1 - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18356,10 +18295,9 @@ end f32.const -0 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18371,10 +18309,9 @@ end f32.const -1 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18386,10 +18323,9 @@ end f32.const -1 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18401,10 +18337,9 @@ end f32.const 1 f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18416,10 +18351,9 @@ end f32.const 1 f32.const -0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18431,10 +18365,9 @@ end f32.const -1 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18446,10 +18379,9 @@ end f32.const 1 f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18461,10 +18393,9 @@ end f32.const -1 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18476,10 +18407,9 @@ end f32.const 1 f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18491,10 +18421,9 @@ end f32.const inf f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18506,10 +18435,9 @@ end f32.const -inf f32.const 0 - call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18521,10 +18449,9 @@ end f32.const inf f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const 0.7853981852531433 f32.const 0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18536,10 +18463,9 @@ end f32.const inf f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const 2.356194496154785 f32.const 0.02500828728079796 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18551,10 +18477,9 @@ end f32.const -inf f32.const inf - call $~lib/math/NativeMathf.atan2 f32.const -0.7853981852531433 f32.const -0.3666777014732361 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18566,10 +18491,9 @@ end f32.const -inf f32.const -inf - call $~lib/math/NativeMathf.atan2 f32.const -2.356194496154785 f32.const -0.02500828728079796 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18581,10 +18505,9 @@ end f32.const 5.877471754111438e-39 f32.const 1 - call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18596,10 +18519,9 @@ end f32.const 1 f32.const 1701411834604692317316873e14 - call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/check + call $std/math/test_atan2f i32.eqz if i32.const 0 @@ -18610,19 +18532,9 @@ unreachable end f64.const -8.06684839057968 - call $~lib/math/NativeMath.cbrt f64.const -2.0055552545020245 f64.const 0.46667951345443726 - call $std/math/check - if (result i32) - f64.const -8.06684839057968 - call $~lib/bindings/Math/cbrt - f64.const -2.0055552545020245 - f64.const 0.46667951345443726 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18633,19 +18545,9 @@ unreachable end f64.const 4.345239849338305 - call $~lib/math/NativeMath.cbrt f64.const 1.6318162410515635 f64.const -0.08160271495580673 - call $std/math/check - if (result i32) - f64.const 4.345239849338305 - call $~lib/bindings/Math/cbrt - f64.const 1.6318162410515635 - f64.const -0.08160271495580673 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18656,19 +18558,9 @@ unreachable end f64.const -8.38143342755525 - call $~lib/math/NativeMath.cbrt f64.const -2.031293910673361 f64.const -0.048101816326379776 - call $std/math/check - if (result i32) - f64.const -8.38143342755525 - call $~lib/bindings/Math/cbrt - f64.const -2.031293910673361 - f64.const -0.048101816326379776 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18679,19 +18571,9 @@ unreachable end f64.const -6.531673581913484 - call $~lib/math/NativeMath.cbrt f64.const -1.8692820012204925 f64.const 0.08624018728733063 - call $std/math/check - if (result i32) - f64.const -6.531673581913484 - call $~lib/bindings/Math/cbrt - f64.const -1.8692820012204925 - f64.const 0.08624018728733063 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18702,19 +18584,9 @@ unreachable end f64.const 9.267056966972586 - call $~lib/math/NativeMath.cbrt f64.const 2.100457720859702 f64.const -0.2722989022731781 - call $std/math/check - if (result i32) - f64.const 9.267056966972586 - call $~lib/bindings/Math/cbrt - f64.const 2.100457720859702 - f64.const -0.2722989022731781 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18725,19 +18597,9 @@ unreachable end f64.const 0.6619858980995045 - call $~lib/math/NativeMath.cbrt f64.const 0.8715311470455973 f64.const 0.4414918124675751 - call $std/math/check - if (result i32) - f64.const 0.6619858980995045 - call $~lib/bindings/Math/cbrt - f64.const 0.8715311470455973 - f64.const 0.4414918124675751 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18748,19 +18610,9 @@ unreachable end f64.const -0.4066039223853553 - call $~lib/math/NativeMath.cbrt f64.const -0.740839030300223 f64.const 0.016453813761472702 - call $std/math/check - if (result i32) - f64.const -0.4066039223853553 - call $~lib/bindings/Math/cbrt - f64.const -0.740839030300223 - f64.const 0.016453813761472702 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18771,19 +18623,9 @@ unreachable end f64.const 0.5617597462207241 - call $~lib/math/NativeMath.cbrt f64.const 0.8251195400559286 f64.const 0.30680638551712036 - call $std/math/check - if (result i32) - f64.const 0.5617597462207241 - call $~lib/bindings/Math/cbrt - f64.const 0.8251195400559286 - f64.const 0.30680638551712036 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18794,19 +18636,9 @@ unreachable end f64.const 0.7741522965913037 - call $~lib/math/NativeMath.cbrt f64.const 0.9182102478959914 f64.const 0.06543998420238495 - call $std/math/check - if (result i32) - f64.const 0.7741522965913037 - call $~lib/bindings/Math/cbrt - f64.const 0.9182102478959914 - f64.const 0.06543998420238495 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18817,19 +18649,9 @@ unreachable end f64.const -0.6787637026394024 - call $~lib/math/NativeMath.cbrt f64.const -0.8788326906580094 f64.const -0.2016713172197342 - call $std/math/check - if (result i32) - f64.const -0.6787637026394024 - call $~lib/bindings/Math/cbrt - f64.const -0.8788326906580094 - f64.const -0.2016713172197342 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18840,19 +18662,9 @@ unreachable end f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.cbrt f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const nan:0x8000000000000 - call $~lib/bindings/Math/cbrt - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18863,19 +18675,9 @@ unreachable end f64.const inf - call $~lib/math/NativeMath.cbrt f64.const inf f64.const 0 - call $std/math/check - if (result i32) - f64.const inf - call $~lib/bindings/Math/cbrt - f64.const inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18886,19 +18688,9 @@ unreachable end f64.const -inf - call $~lib/math/NativeMath.cbrt f64.const -inf f64.const 0 - call $std/math/check - if (result i32) - f64.const -inf - call $~lib/bindings/Math/cbrt - f64.const -inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18909,19 +18701,9 @@ unreachable end f64.const 0 - call $~lib/math/NativeMath.cbrt f64.const 0 f64.const 0 - call $std/math/check - if (result i32) - f64.const 0 - call $~lib/bindings/Math/cbrt - f64.const 0 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18932,19 +18714,9 @@ unreachable end f64.const -0 - call $~lib/math/NativeMath.cbrt f64.const -0 f64.const 0 - call $std/math/check - if (result i32) - f64.const -0 - call $~lib/bindings/Math/cbrt - f64.const -0 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18955,19 +18727,9 @@ unreachable end f64.const 9.313225746154785e-10 - call $~lib/math/NativeMath.cbrt f64.const 0.0009765625 f64.const 0 - call $std/math/check - if (result i32) - f64.const 9.313225746154785e-10 - call $~lib/bindings/Math/cbrt - f64.const 0.0009765625 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -18978,19 +18740,9 @@ unreachable end f64.const -9.313225746154785e-10 - call $~lib/math/NativeMath.cbrt f64.const -0.0009765625 f64.const 0 - call $std/math/check - if (result i32) - f64.const -9.313225746154785e-10 - call $~lib/bindings/Math/cbrt - f64.const -0.0009765625 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -19001,19 +18753,9 @@ unreachable end f64.const 1 - call $~lib/math/NativeMath.cbrt f64.const 1 f64.const 0 - call $std/math/check - if (result i32) - f64.const 1 - call $~lib/bindings/Math/cbrt - f64.const 1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -19024,19 +18766,9 @@ unreachable end f64.const -1 - call $~lib/math/NativeMath.cbrt f64.const -1 f64.const 0 - call $std/math/check - if (result i32) - f64.const -1 - call $~lib/bindings/Math/cbrt - f64.const -1 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -19047,19 +18779,9 @@ unreachable end f64.const 8 - call $~lib/math/NativeMath.cbrt f64.const 2 f64.const 0 - call $std/math/check - if (result i32) - f64.const 8 - call $~lib/bindings/Math/cbrt - f64.const 2 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_cbrt i32.eqz if i32.const 0 @@ -29197,10 +28919,9 @@ end f64.const -8.06684839057968 f64.const 4.535662560676869 - call $~lib/math/NativeMath.hypot f64.const 9.25452742288464 f64.const -0.31188681721687317 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29212,10 +28933,9 @@ end f64.const 4.345239849338305 f64.const -8.88799136300345 - call $~lib/math/NativeMath.hypot f64.const 9.893305808328252 f64.const 0.4593673348426819 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29227,10 +28947,9 @@ end f64.const -8.38143342755525 f64.const -2.763607337379588 - call $~lib/math/NativeMath.hypot f64.const 8.825301797432132 f64.const -0.1701754331588745 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29242,10 +28961,9 @@ end f64.const -6.531673581913484 f64.const 4.567535276842744 - call $~lib/math/NativeMath.hypot f64.const 7.970265885519092 f64.const -0.3176782727241516 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29257,10 +28975,9 @@ end f64.const 9.267056966972586 f64.const 4.811392084359796 - call $~lib/math/NativeMath.hypot f64.const 10.441639651824575 f64.const -0.2693633437156677 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29272,10 +28989,9 @@ end f64.const -6.450045556060236 f64.const 0.6620717923376739 - call $~lib/math/NativeMath.hypot f64.const 6.483936052542593 f64.const 0.35618898272514343 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29287,10 +29003,9 @@ end f64.const 7.858890253041697 f64.const 0.05215452675006225 - call $~lib/math/NativeMath.hypot f64.const 7.859063309581766 f64.const 0.08044655621051788 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29302,10 +29017,9 @@ end f64.const -0.792054511984896 f64.const 7.67640268511754 - call $~lib/math/NativeMath.hypot f64.const 7.717156764899584 f64.const 0.05178084969520569 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29317,10 +29031,9 @@ end f64.const 0.615702673197924 f64.const 2.0119025790324803 - call $~lib/math/NativeMath.hypot f64.const 2.104006123874314 f64.const -0.0918039008975029 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29332,10 +29045,9 @@ end f64.const -0.5587586823609152 f64.const 0.03223983060263804 - call $~lib/math/NativeMath.hypot f64.const 0.5596880129062913 f64.const 0.1383407711982727 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29347,10 +29059,9 @@ end f64.const 3 f64.const 4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29362,10 +29073,9 @@ end f64.const -3 f64.const 4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29377,10 +29087,9 @@ end f64.const 4 f64.const 3 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29392,10 +29101,9 @@ end f64.const 4 f64.const -3 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29407,10 +29115,9 @@ end f64.const -3 f64.const -4 - call $~lib/math/NativeMath.hypot f64.const 5 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29422,10 +29129,9 @@ end f64.const 1797693134862315708145274e284 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const 1797693134862315708145274e284 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29437,10 +29143,9 @@ end f64.const 1797693134862315708145274e284 f64.const -0 - call $~lib/math/NativeMath.hypot f64.const 1797693134862315708145274e284 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29452,10 +29157,9 @@ end f64.const 5e-324 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const 5e-324 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29467,10 +29171,9 @@ end f64.const 5e-324 f64.const -0 - call $~lib/math/NativeMath.hypot f64.const 5e-324 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29482,10 +29185,9 @@ end f64.const inf f64.const 1 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29497,10 +29199,9 @@ end f64.const 1 f64.const inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29512,10 +29213,9 @@ end f64.const inf f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29527,10 +29227,9 @@ end f64.const nan:0x8000000000000 f64.const inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29542,10 +29241,9 @@ end f64.const -inf f64.const 1 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29557,10 +29255,9 @@ end f64.const 1 f64.const -inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29572,10 +29269,9 @@ end f64.const -inf f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29587,10 +29283,9 @@ end f64.const nan:0x8000000000000 f64.const -inf - call $~lib/math/NativeMath.hypot f64.const inf f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29602,10 +29297,9 @@ end f64.const nan:0x8000000000000 f64.const 1 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29617,10 +29311,9 @@ end f64.const 1 f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29632,10 +29325,9 @@ end f64.const nan:0x8000000000000 f64.const 0 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -29647,10 +29339,9 @@ end f64.const 0 f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.hypot f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check + call $std/math/test_hypot i32.eqz if i32.const 0 @@ -30705,19 +30396,9 @@ unreachable end f64.const -8.06684839057968 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -8.06684839057968 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30728,19 +30409,9 @@ unreachable end f64.const 4.345239849338305 - call $~lib/math/NativeMath.log10 f64.const 0.6380137537120029 f64.const -0.2088824063539505 - call $std/math/check - if (result i32) - f64.const 4.345239849338305 - call $~lib/bindings/Math/log10 - f64.const 0.6380137537120029 - f64.const -0.2088824063539505 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30751,19 +30422,9 @@ unreachable end f64.const -8.38143342755525 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -8.38143342755525 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30774,19 +30435,9 @@ unreachable end f64.const -6.531673581913484 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -6.531673581913484 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30797,19 +30448,9 @@ unreachable end f64.const 9.267056966972586 - call $~lib/math/NativeMath.log10 f64.const 0.9669418327487274 f64.const -0.06120431795716286 - call $std/math/check - if (result i32) - f64.const 9.267056966972586 - call $~lib/bindings/Math/log10 - f64.const 0.9669418327487274 - f64.const -0.06120431795716286 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30820,19 +30461,9 @@ unreachable end f64.const 0.6619858980995045 - call $~lib/math/NativeMath.log10 f64.const -0.17915126198447093 f64.const 0.39090874791145325 - call $std/math/check - if (result i32) - f64.const 0.6619858980995045 - call $~lib/bindings/Math/log10 - f64.const -0.17915126198447093 - f64.const 0.39090874791145325 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30843,19 +30474,9 @@ unreachable end f64.const -0.4066039223853553 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -0.4066039223853553 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30866,19 +30487,9 @@ unreachable end f64.const 0.5617597462207241 - call $~lib/math/NativeMath.log10 f64.const -0.25044938407454437 f64.const -0.3046841621398926 - call $std/math/check - if (result i32) - f64.const 0.5617597462207241 - call $~lib/bindings/Math/log10 - f64.const -0.25044938407454437 - f64.const -0.3046841621398926 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30889,19 +30500,9 @@ unreachable end f64.const 0.7741522965913037 - call $~lib/math/NativeMath.log10 f64.const -0.11117359349943837 f64.const -0.31503361463546753 - call $std/math/check - if (result i32) - f64.const 0.7741522965913037 - call $~lib/bindings/Math/log10 - f64.const -0.11117359349943837 - f64.const -0.31503361463546753 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30912,19 +30513,9 @@ unreachable end f64.const -0.6787637026394024 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -0.6787637026394024 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30935,19 +30526,9 @@ unreachable end f64.const 0 - call $~lib/math/NativeMath.log10 f64.const -inf f64.const 0 - call $std/math/check - if (result i32) - f64.const 0 - call $~lib/bindings/Math/log10 - f64.const -inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30958,19 +30539,9 @@ unreachable end f64.const -0 - call $~lib/math/NativeMath.log10 f64.const -inf f64.const 0 - call $std/math/check - if (result i32) - f64.const -0 - call $~lib/bindings/Math/log10 - f64.const -inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -30981,19 +30552,9 @@ unreachable end f64.const -7.888609052210118e-31 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -7.888609052210118e-31 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31004,19 +30565,9 @@ unreachable end f64.const 1 - call $~lib/math/NativeMath.log10 f64.const 0 f64.const 0 - call $std/math/check - if (result i32) - f64.const 1 - call $~lib/bindings/Math/log10 - f64.const 0 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31027,19 +30578,9 @@ unreachable end f64.const -1 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -1 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31050,19 +30591,9 @@ unreachable end f64.const inf - call $~lib/math/NativeMath.log10 f64.const inf f64.const 0 - call $std/math/check - if (result i32) - f64.const inf - call $~lib/bindings/Math/log10 - f64.const inf - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31073,19 +30604,9 @@ unreachable end f64.const -inf - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const -inf - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31096,19 +30617,9 @@ unreachable end f64.const nan:0x8000000000000 - call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/check - if (result i32) - f64.const nan:0x8000000000000 - call $~lib/bindings/Math/log10 - f64.const nan:0x8000000000000 - f64.const 0 - call $std/math/check - else - i32.const 0 - end + call $std/math/test_log10 i32.eqz if i32.const 0 @@ -31119,10 +30630,9 @@ unreachable end f32.const -8.066848754882812 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31133,10 +30643,9 @@ unreachable end f32.const 4.345239639282227 - call $~lib/math/NativeMathf.log10 f32.const 0.6380137205123901 f32.const -0.20476758480072021 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31147,10 +30656,9 @@ unreachable end f32.const -8.381433486938477 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31161,10 +30669,9 @@ unreachable end f32.const -6.531673431396484 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31175,10 +30682,9 @@ unreachable end f32.const 9.267057418823242 - call $~lib/math/NativeMathf.log10 f32.const 0.9669418334960938 f32.const -0.34273025393486023 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31189,10 +30695,9 @@ unreachable end f32.const 0.6619858741760254 - call $~lib/math/NativeMathf.log10 f32.const -0.1791512817144394 f32.const -0.27078554034233093 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31203,10 +30708,9 @@ unreachable end f32.const -0.40660393238067627 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31217,10 +30721,9 @@ unreachable end f32.const 0.5617597699165344 - call $~lib/math/NativeMathf.log10 f32.const -0.25044935941696167 f32.const 0.2126826047897339 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31231,10 +30734,9 @@ unreachable end f32.const 0.7741522789001465 - call $~lib/math/NativeMathf.log10 f32.const -0.1111735999584198 f32.const 0.46515095233917236 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31245,10 +30747,9 @@ unreachable end f32.const -0.6787636876106262 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31259,10 +30760,9 @@ unreachable end f32.const 0 - call $~lib/math/NativeMathf.log10 f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31273,10 +30773,9 @@ unreachable end f32.const -0 - call $~lib/math/NativeMathf.log10 f32.const -inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31287,10 +30786,9 @@ unreachable end f32.const -7.888609052210118e-31 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31301,10 +30799,9 @@ unreachable end f32.const 1 - call $~lib/math/NativeMathf.log10 f32.const 0 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31315,10 +30812,9 @@ unreachable end f32.const -1 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31329,10 +30825,9 @@ unreachable end f32.const inf - call $~lib/math/NativeMathf.log10 f32.const inf f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31343,10 +30838,9 @@ unreachable end f32.const -inf - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -31357,10 +30851,9 @@ unreachable end f32.const nan:0x400000 - call $~lib/math/NativeMathf.log10 f32.const nan:0x400000 f32.const 0 - call $std/math/check + call $std/math/test_log10f i32.eqz if i32.const 0 @@ -44532,28 +44025,28 @@ call $~lib/math/NativeMath.seedRandom end global.get $~lib/math/random_state0_64 - local.set $2 + local.set $6 global.get $~lib/math/random_state1_64 - local.tee $3 + local.tee $2 global.set $~lib/math/random_state0_64 - local.get $3 local.get $2 + local.get $6 i64.const 23 i64.shl - local.get $2 + local.get $6 i64.xor - local.tee $2 + local.tee $6 + local.get $6 i64.const 17 i64.shr_u - local.get $2 i64.xor i64.xor - local.get $3 + local.get $2 i64.const 26 i64.shr_u i64.xor global.set $~lib/math/random_state1_64 - local.get $3 + local.get $2 i64.const 12 i64.shr_u i64.const 4607182418800017408 @@ -44564,11 +44057,10 @@ local.tee $0 f64.const 1 f64.lt - i32.const 0 local.get $0 f64.const 0 f64.ge - select + i32.and i32.eqz if i32.const 0 @@ -44604,24 +44096,24 @@ call $~lib/math/NativeMath.seedRandom end global.get $~lib/math/random_state0_32 - local.tee $5 + local.tee $4 global.get $~lib/math/random_state1_32 i32.xor - local.tee $4 - local.get $5 + local.tee $3 + local.get $4 i32.const 26 i32.rotl i32.xor - local.get $4 + local.get $3 i32.const 9 i32.shl i32.xor global.set $~lib/math/random_state0_32 - local.get $4 + local.get $3 i32.const 13 i32.rotl global.set $~lib/math/random_state1_32 - local.get $5 + local.get $4 i32.const -1640531525 i32.mul i32.const 5 @@ -44635,14 +44127,13 @@ f32.reinterpret_i32 f32.const 1 f32.sub - local.tee $6 + local.tee $5 f32.const 1 f32.lt - i32.const 0 - local.get $6 + local.get $5 f32.const 0 f32.ge - select + i32.and i32.eqz if i32.const 0 diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat index 3a905d40e0..1c0226fb8c 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -20,6 +20,7 @@ (local $7 i64) (local $8 i64) (local $9 i64) + (local $10 i64) block $__inlined_func$std/mod/check (result i32) block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 @@ -29,200 +30,194 @@ local.get $0 f64.copysign local.get $1 - local.tee $4 f64.abs f64.const 1 f64.eq br_if $__inlined_func$~lib/math/NativeMath.mod drop - local.get $4 + local.get $1 i64.reinterpret_f64 - local.tee $5 + local.tee $8 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.set $7 - i32.const 1 - local.get $4 - local.get $4 - f64.ne - i32.const 1 + local.set $9 + local.get $8 + i64.const 1 + i64.shl + local.tee $6 + i64.eqz local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $5 i64.const 52 i64.shr_u i64.const 2047 i64.and - local.tee $6 + local.tee $10 i64.const 2047 i64.eq - local.get $5 - i64.const 1 - i64.shl - local.tee $8 - i64.eqz - select - select + i32.or + local.get $1 + local.get $1 + f64.ne + i32.or if local.get $0 - local.get $4 - f64.mul - local.tee $1 local.get $1 + f64.mul + local.tee $4 + local.get $4 f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $8 - local.get $3 + local.get $6 + local.get $5 i64.const 1 i64.shl - local.tee $9 + local.tee $3 i64.ge_u if local.get $0 - local.get $8 - local.get $9 + local.get $3 + local.get $6 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $3 + local.get $5 i64.const 63 i64.shr_u - local.set $8 - local.get $6 + local.get $10 i64.eqz if (result i64) - local.get $3 + local.get $5 i64.const 1 - local.get $6 - local.get $3 + local.get $10 + local.get $5 i64.const 12 i64.shl i64.clz i64.sub - local.tee $6 + local.tee $10 i64.sub i64.shl else - local.get $3 + local.get $5 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $3 - local.get $7 + local.get $9 i64.eqz if (result i64) - local.get $5 + local.get $8 i64.const 1 - local.get $7 - local.get $5 + local.get $9 + local.get $8 i64.const 12 i64.shl i64.clz i64.sub - local.tee $7 + local.tee $9 i64.sub i64.shl else - local.get $5 + local.get $8 i64.const 4503599627370495 i64.and i64.const 4503599627370496 i64.or end local.set $5 - block $folding-inner0 - loop $while-continue|0 - local.get $6 - local.get $7 - i64.gt_s - if + loop $while-continue|0 + local.get $9 + local.get $10 + i64.lt_s + if + local.get $3 + local.get $5 + i64.ge_u + if (result i64) + local.get $0 + f64.const 0 + f64.mul + local.get $3 + local.get $5 + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 local.get $5 - i64.ge_u - if (result i64) - local.get $3 - local.get $5 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $5 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $6 - i64.const 1 i64.sub - local.set $6 - br $while-continue|0 + else + local.get $3 end + i64.const 1 + i64.shl + local.set $3 + local.get $10 + i64.const 1 + i64.sub + local.set $10 + br $while-continue|0 end - local.get $6 + end + local.get $10 + local.get $3 + local.get $5 + i64.ge_u + if + local.get $0 + f64.const 0 + f64.mul local.get $3 local.get $5 - i64.ge_u - if - local.get $3 - local.get $5 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $5 - i64.sub - local.set $3 - end + i64.eq + br_if $__inlined_func$~lib/math/NativeMath.mod + drop local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $6 + local.get $5 i64.sub - local.set $5 - local.get $3 - local.get $6 - i64.shl local.set $3 - local.get $5 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.sub - local.get $5 - i64.const 52 - i64.shl - i64.or - else - local.get $3 - i64.const 1 - local.get $5 - i64.sub - i64.shr_u - end - local.get $8 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - br $__inlined_func$~lib/math/NativeMath.mod end - local.get $0 - f64.const 0 - f64.mul + local.get $3 + i64.const 11 + i64.shl + i64.clz + local.tee $6 + i64.sub + local.set $5 + i64.const 63 + i64.shl + local.get $3 + local.get $6 + i64.shl + local.tee $3 + i64.const 4503599627370496 + i64.sub + local.get $5 + i64.const 52 + i64.shl + i64.or + local.get $3 + i64.const 1 + local.get $5 + i64.sub + i64.shr_u + local.get $5 + i64.const 0 + i64.gt_s + select + i64.or + f64.reinterpret_i64 end - local.tee $1 - local.get $1 + local.tee $4 + local.get $4 f64.ne local.get $2 local.get $2 @@ -233,7 +228,7 @@ local.get $2 f64.div f64.const 1 - local.get $1 + local.get $4 f64.div f64.eq local.get $2 @@ -241,14 +236,14 @@ f64.eq br_if $__inlined_func$std/mod/check drop - local.get $1 local.get $2 + local.get $4 f64.eq end if (result i32) block $__inlined_func$std/mod/check0 (result i32) local.get $0 - local.get $4 + local.get $1 call $std/mod/mod local.tee $0 local.get $0 @@ -285,6 +280,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) block $__inlined_func$std/mod/check (result i32) block $__inlined_func$~lib/math/NativeMathf.mod (result f32) local.get $0 @@ -301,31 +297,31 @@ drop local.get $1 i32.reinterpret_f32 - local.tee $4 + local.tee $7 i32.const 23 i32.shr_u i32.const 255 i32.and - local.set $6 + local.set $8 i32.const 1 local.get $1 local.get $1 f32.ne local.get $0 i32.reinterpret_f32 - local.tee $3 + local.tee $5 i32.const 23 i32.shr_u i32.const 255 i32.and - local.tee $5 + local.tee $9 i32.const 255 i32.eq i32.const 1 - local.get $4 + local.get $7 i32.const 1 i32.shl - local.tee $7 + local.tee $4 select select if @@ -337,148 +333,147 @@ f32.div br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $7 - local.get $3 + local.get $4 + local.get $5 i32.const 1 i32.shl - local.tee $8 + local.tee $3 i32.ge_u if local.get $0 - local.get $7 - local.get $8 + local.get $3 + local.get $4 i32.ne f32.convert_i32_u f32.mul br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $3 + local.get $5 i32.const -2147483648 i32.and - local.set $7 - local.get $5 + local.set $6 + local.get $9 if (result i32) - local.get $3 + local.get $5 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $3 + local.get $5 i32.const 1 + local.get $9 local.get $5 - local.get $3 i32.const 9 i32.shl i32.clz i32.sub - local.tee $5 + local.tee $9 i32.sub i32.shl end local.set $3 - local.get $6 + local.get $8 if (result i32) - local.get $4 + local.get $7 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $4 + local.get $7 i32.const 1 - local.get $6 - local.get $4 + local.get $8 + local.get $7 i32.const 9 i32.shl i32.clz i32.sub - local.tee $6 + local.tee $8 i32.sub i32.shl end local.set $4 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - local.get $6 - i32.gt_s - if + loop $while-continue|0 + local.get $8 + local.get $9 + i32.lt_s + if + local.get $3 + local.get $4 + i32.ge_u + if (result i32) + local.get $0 + f32.const 0 + f32.mul + local.get $3 + local.get $4 + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop local.get $3 local.get $4 - i32.ge_u - if (result i32) - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - else - local.get $3 - end - i32.const 1 - i32.shl - local.set $3 - local.get $5 - i32.const 1 i32.sub - local.set $5 - br $while-continue|0 + else + local.get $3 end + i32.const 1 + i32.shl + local.set $3 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + br $while-continue|0 end - local.get $5 + end + local.get $9 + local.get $3 + local.get $4 + i32.ge_u + if + local.get $0 + f32.const 0 + f32.mul local.get $3 local.get $4 - i32.ge_u - if - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - local.set $3 - end + i32.eq + br_if $__inlined_func$~lib/math/NativeMathf.mod + drop local.get $3 - i32.const 8 - i32.shl - i32.clz - local.tee $5 + local.get $4 i32.sub - local.set $4 - local.get $3 - local.get $5 - i32.shl local.set $3 - local.get $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $3 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $7 - i32.or - f32.reinterpret_i32 - br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $0 - f32.const 0 - f32.mul + local.get $3 + i32.const 8 + i32.shl + i32.clz + local.tee $5 + i32.sub + local.set $4 + local.get $3 + local.get $5 + i32.shl + local.tee $3 + i32.const 8388608 + i32.sub + local.get $4 + i32.const 23 + i32.shl + i32.or + local.get $3 + i32.const 1 + local.get $4 + i32.sub + i32.shr_u + local.get $4 + i32.const 0 + i32.gt_s + select + local.get $6 + i32.or + f32.reinterpret_i32 end local.tee $0 local.get $0 diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 715b79212f..797cbb8408 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -41,12 +41,12 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -85,160 +85,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17860 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -275,11 +121,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -291,28 +136,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -324,19 +166,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -361,9 +203,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -371,17 +213,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -509,7 +351,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -520,7 +362,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -540,44 +382,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -587,7 +428,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -597,20 +438,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -638,7 +479,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -665,15 +506,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -685,15 +523,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -714,6 +552,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -723,7 +564,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -760,8 +601,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -920,7 +761,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1045,7 +890,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1055,7 +900,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1068,14 +913,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1105,9 +949,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1123,13 +967,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1139,9 +983,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1209,7 +1053,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1263,17 +1107,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1286,16 +1130,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1303,15 +1147,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1338,22 +1182,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1362,19 +1206,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1386,8 +1230,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1400,12 +1244,12 @@ i32.const 8 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1419,7 +1263,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1434,64 +1278,64 @@ local.get $0 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.add - local.tee $0 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $4 local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.store - local.get $1 + local.get $0 f32.const 2 f32.store offset=4 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.load i32.const 1 i32.add i32.store - local.get $1 + local.get $0 f32.const 3 f32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 global.set $std/new/aClass ) (func $~lib/rt/__visit_members (param $0 i32) @@ -1515,7 +1359,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1526,4 +1370,153 @@ (func $~start call $start:std/new ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17860 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 4f82e9c7b1..3eefe0db84 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -43,7 +43,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -57,32 +57,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -99,29 +98,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 4e367f31bb..efaa0b6304 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -144,160 +144,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17956 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1520 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1524 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -334,11 +180,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -350,28 +195,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -383,19 +225,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -420,9 +262,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -430,17 +272,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -568,7 +410,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -579,7 +421,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -599,44 +441,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -646,7 +487,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -656,20 +497,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -697,7 +538,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -724,15 +565,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -744,15 +582,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -773,6 +611,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -782,7 +623,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -819,8 +660,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -979,7 +820,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1104,7 +949,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1114,7 +959,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1127,14 +972,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1164,9 +1008,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1182,13 +1026,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1198,9 +1042,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1270,17 +1114,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1293,16 +1137,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1310,15 +1154,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1345,12 +1189,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1360,7 +1204,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1369,19 +1213,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1411,8 +1255,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1441,42 +1285,42 @@ local.get $1 i32.const 20 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 ) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1669,360 +1513,360 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/a2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/a local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/s1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/s2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/s local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/m1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/m2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/m local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/d1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/d2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/d local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/f1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/f2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/f local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/p1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/p2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/p local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/n1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/n2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/n local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/o1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/o2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/o local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/x1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/x2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/x local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/eq1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/eq2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/eq3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/eq4 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/gt1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/gt2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/gte1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/gte2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/le1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/le2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/leq1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/leq2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/shr local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/sres local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/shu local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/ures local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/shl local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/pos local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/pres local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/neg local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/nres local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/not local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/res local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/excl local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/incdec local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/tmp local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/ais1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/ais2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/ais local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/aii1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/aii2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/operator-overloading/aii local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -2047,7 +1891,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2129,21 +1973,21 @@ global.set $std/operator-overloading/a2 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/a1 - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/a2 - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/a @@ -3403,21 +3247,21 @@ global.set $std/operator-overloading/ais2 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais1 - local.tee $1 + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais2 - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais @@ -3466,21 +3310,21 @@ global.set $std/operator-overloading/aii2 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii1 - local.tee $1 + local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii2 - local.tee $0 + local.tee $1 i32.store offset=12 - local.get $1 - i32.load local.get $0 i32.load - i32.add local.get $1 - i32.load offset=4 + i32.load + i32.add local.get $0 i32.load offset=4 + local.get $1 + i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii @@ -3624,4 +3468,153 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17956 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1520 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index 7be887b047..87ab92dc44 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -20,13 +20,13 @@ (local $4 i32) (local $5 i32) i32.const 8 - local.set $4 + local.set $5 loop $while-continue|0 local.get $1 i32.const 3 i32.and i32.const 0 - local.get $4 + local.get $5 select if local.get $0 @@ -43,10 +43,10 @@ local.get $3 i32.load8_u i32.store8 - local.get $4 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 br $while-continue|0 end end @@ -56,7 +56,7 @@ i32.eqz if loop $while-continue|1 - local.get $4 + local.get $5 i32.const 16 i32.ge_u if @@ -84,14 +84,14 @@ i32.const 16 i32.add local.set $0 - local.get $4 + local.get $5 i32.const 16 i32.sub - local.set $4 + local.set $5 br $while-continue|1 end end - local.get $4 + local.get $5 i32.const 8 i32.and if @@ -112,7 +112,7 @@ i32.add local.set $0 end - local.get $4 + local.get $5 i32.const 4 i32.and if @@ -129,7 +129,7 @@ i32.add local.set $0 end - local.get $4 + local.get $5 i32.const 2 i32.and if @@ -146,7 +146,7 @@ i32.add local.set $0 end - local.get $4 + local.get $5 i32.const 1 i32.and if @@ -157,7 +157,7 @@ end return end - local.get $4 + local.get $5 i32.const 32 i32.ge_u if @@ -174,7 +174,7 @@ end local.get $1 i32.load - local.set $5 + local.set $4 local.get $0 local.get $1 i32.load8_u @@ -201,12 +201,12 @@ local.get $3 i32.load8_u i32.store8 - local.get $4 + local.get $5 i32.const 3 i32.sub - local.set $4 + local.set $5 loop $while-continue|3 - local.get $4 + local.get $5 i32.const 17 i32.ge_u if @@ -216,7 +216,7 @@ local.tee $2 i32.const 8 i32.shl - local.get $5 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -246,7 +246,7 @@ local.get $0 local.get $1 i32.load offset=13 - local.tee $5 + local.tee $4 i32.const 8 i32.shl local.get $2 @@ -262,10 +262,10 @@ i32.const 16 i32.add local.set $0 - local.get $4 + local.get $5 i32.const 16 i32.sub - local.set $4 + local.set $5 br $while-continue|3 end end @@ -273,31 +273,31 @@ end local.get $1 i32.load - local.set $5 + local.set $4 local.get $0 local.get $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.tee $2 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $2 + local.tee $3 i32.const 2 i32.add local.set $1 - local.get $3 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $5 i32.const 2 i32.sub - local.set $4 + local.set $5 loop $while-continue|4 - local.get $4 + local.get $5 i32.const 18 i32.ge_u if @@ -307,7 +307,7 @@ local.tee $2 i32.const 16 i32.shl - local.get $5 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -337,7 +337,7 @@ local.get $0 local.get $1 i32.load offset=14 - local.tee $5 + local.tee $4 i32.const 16 i32.shl local.get $2 @@ -353,10 +353,10 @@ i32.const 16 i32.add local.set $0 - local.get $4 + local.get $5 i32.const 16 i32.sub - local.set $4 + local.set $5 br $while-continue|4 end end @@ -364,7 +364,7 @@ end local.get $1 i32.load - local.set $5 + local.set $4 local.get $0 local.tee $2 i32.const 1 @@ -379,12 +379,12 @@ local.get $3 i32.load8_u i32.store8 - local.get $4 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 loop $while-continue|5 - local.get $4 + local.get $5 i32.const 19 i32.ge_u if @@ -394,7 +394,7 @@ local.tee $2 i32.const 24 i32.shl - local.get $5 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -424,7 +424,7 @@ local.get $0 local.get $1 i32.load offset=15 - local.tee $5 + local.tee $4 i32.const 24 i32.shl local.get $2 @@ -440,16 +440,16 @@ i32.const 16 i32.add local.set $0 - local.get $4 + local.get $5 i32.const 16 i32.sub - local.set $4 + local.set $5 br $while-continue|5 end end end end - local.get $4 + local.get $5 i32.const 16 i32.and if @@ -458,147 +458,117 @@ i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - local.get $1 + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - local.get $1 + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 + local.tee $1 + i32.load8_u + i32.store8 + local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add local.set $1 - local.get $3 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end - local.get $4 + local.get $5 i32.const 8 i32.and if @@ -607,75 +577,61 @@ i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 - local.tee $2 i32.const 2 i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $0 - local.get $1 + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add local.set $1 - local.get $3 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end - local.get $4 + local.get $5 i32.const 4 i32.and if @@ -684,39 +640,33 @@ i32.load8_u i32.store8 local.get $0 - local.tee $3 - i32.const 2 - i32.add - local.set $0 local.get $1 - local.tee $2 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.get $2 i32.load8_u offset=1 i32.store8 offset=1 local.get $0 - local.get $1 - i32.load8_u - i32.store8 - local.get $0 - local.tee $3 i32.const 2 i32.add - local.set $0 + local.tee $0 local.get $1 + i32.const 2 + i32.add local.tee $2 + i32.load8_u + i32.store8 + local.get $2 i32.const 2 i32.add local.set $1 - local.get $3 + local.get $0 local.get $2 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.set $0 end - local.get $4 + local.get $5 i32.const 2 i32.and if @@ -725,21 +675,21 @@ i32.load8_u i32.store8 local.get $0 - local.tee $3 + local.tee $2 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $2 + local.tee $3 i32.const 2 i32.add local.set $1 - local.get $3 local.get $2 + local.get $3 i32.load8_u offset=1 i32.store8 offset=1 end - local.get $4 + local.get $5 i32.const 1 i32.and if @@ -835,10 +785,10 @@ i32.add global.set $std/pointer/one global.get $std/pointer/one - local.tee $1 + local.tee $0 global.set $std/pointer/nextOne global.get $std/pointer/nextOne - local.get $1 + local.get $0 i32.ne if i32.const 0 @@ -963,17 +913,17 @@ i32.sub local.set $4 local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $2 + local.tee $3 i32.const 1 i32.add local.set $1 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 br $while-continue|0 @@ -1008,17 +958,17 @@ local.get $4 if local.get $0 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $2 + local.tee $3 i32.const 1 i32.add local.set $1 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 local.get $4 @@ -1253,12 +1203,12 @@ unreachable end global.get $std/pointer/buf - local.tee $3 + local.tee $0 i32.const 8 i32.add f32.const 1.2999999523162842 f32.store - local.get $3 + local.get $0 f32.load offset=8 f32.const 1.2999999523162842 f32.ne @@ -1295,10 +1245,10 @@ unreachable end global.get $std/pointer/buf - local.tee $2 + local.tee $0 f32.const 1.399999976158142 f32.store - local.get $2 + local.get $0 f32.load f32.const 1.399999976158142 f32.ne diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index a4618f1880..b439c19c0f 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -55,11 +55,11 @@ (local $0 i32) (local $1 i32) i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1456 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -126,7 +126,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -149,7 +149,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -159,15 +159,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -232,30 +232,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -292,11 +268,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -308,28 +283,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -341,19 +313,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -378,9 +350,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -388,17 +360,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -526,7 +498,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -537,7 +509,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -557,44 +529,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -604,7 +575,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -614,20 +585,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -655,7 +626,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -682,15 +653,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -702,15 +670,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -731,6 +699,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -740,7 +711,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -777,8 +748,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -937,7 +908,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1062,7 +1037,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1072,7 +1047,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1085,14 +1060,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1117,56 +1091,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1314,14 +1285,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1331,17 +1302,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1357,22 +1328,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1383,11 +1354,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1482,10 +1453,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1493,7 +1460,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1504,54 +1474,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1559,16 +1525,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1577,7 +1543,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1585,9 +1551,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1598,11 +1564,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1613,12 +1579,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1631,89 +1597,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1721,7 +1687,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1729,61 +1695,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1819,7 +1730,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -1827,7 +1738,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -1835,13 +1746,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -1849,14 +1760,14 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load8_s local.tee $8 i32.store8 @@ -1872,29 +1783,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -1907,30 +1818,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -1945,77 +1862,77 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find - loop $while-continue|0 - local.get $2 - if - local.get $2 - i32.load offset=4 - local.tee $3 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $2 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/set/Set#find - local.get $3 - i32.const -2 - i32.and - local.set $2 - br $while-continue|0 - end - end - i32.const 0 + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load local.set $2 + loop $while-continue|0 + local.get $2 + if + local.get $2 + local.get $2 + i32.load offset=4 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find + drop + local.get $4 + i32.const -2 + i32.and + local.set $2 + br $while-continue|0 + end + end + i32.const 0 end - local.get $2 i32.eqz if local.get $0 @@ -2049,18 +1966,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -2076,7 +1993,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -2102,17 +2019,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2258,19 +2175,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2285,7 +2202,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2296,10 +2213,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2307,10 +2224,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2321,7 +2238,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2351,17 +2268,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2376,7 +2293,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2387,10 +2304,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2398,10 +2315,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2412,7 +2329,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2438,17 +2355,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2463,7 +2380,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2474,10 +2391,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2485,10 +2402,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2499,7 +2416,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2536,131 +2453,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2677,59 +2572,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2746,7 +2635,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2757,11 +2646,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2775,17 +2664,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2799,16 +2688,236 @@ i32.store8 end ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + local.get $1 + i32.ge_u + if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + local.set $5 + block $~lib/util/memory/memmove|inlined.0 + local.get $4 + local.tee $1 + local.get $0 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.sub + local.get $5 + i32.sub + i32.const 0 + local.get $5 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $1 + local.get $0 + local.get $5 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.gt_u + if + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $1 + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $1 + local.get $0 + i64.load + i64.store + local.get $5 + i32.const 8 + i32.sub + local.set $5 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 8 + i32.add + local.set $0 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $5 + if + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|2 + end + end + else + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $1 + local.get $5 + i32.add + i32.const 7 + i32.and + if + local.get $5 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $5 + i32.const 8 + i32.ge_u + if + local.get $5 + i32.const 8 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $5 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + local.get $1 + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + local.get $4 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $2 i32.shr_u local.get $1 @@ -2827,9 +2936,6 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - local.set $4 local.get $1 i32.const 8 local.get $1 @@ -2839,272 +2945,56 @@ local.get $2 i32.shl local.set $1 - block $__inlined_func$~lib/rt/itcms/__renew (result i32) + local.get $0 + i32.load + local.tee $2 + local.get $3 + if + local.get $4 + i32.const 1 + i32.shl + local.tee $3 + i32.const 1073741820 local.get $3 - if (result i32) - local.get $8 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.lt_u - select - else - local.get $1 - end - local.tee $6 - local.get $4 - local.tee $2 - i32.const 20 - i32.sub - local.tee $1 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $1 - local.get $6 - i32.store offset=16 - local.get $2 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $6 - local.get $1 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $9 - local.set $3 - local.get $6 + i32.const 1073741820 + i32.lt_u + select + local.tee $3 local.get $1 - i32.load offset=16 - local.tee $1 local.get $1 - local.get $6 - i32.gt_u + local.get $3 + i32.lt_u select - local.set $7 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $2 - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $3 - i32.sub - local.get $7 - i32.sub - i32.const 0 - local.get $7 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $3 - local.get $1 - local.get $7 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $3 - i32.gt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $3 - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $1 - i64.load - i64.store - local.get $7 - i32.const 8 - i32.sub - local.set $7 - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $7 - if - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $3 - local.get $7 - i32.add - i32.const 7 - i32.and - if - local.get $7 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $7 - i32.const 8 - i32.ge_u - if - local.get $3 - local.get $7 - i32.const 8 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $7 - if - local.get $3 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.add - local.get $1 - local.get $7 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $9 + local.set $1 end - local.tee $1 - local.get $8 + local.get $1 + call $~lib/rt/itcms/__renew + local.tee $3 + local.get $4 i32.add - local.get $6 - local.get $8 + local.get $1 + local.get $4 i32.sub call $~lib/memory/memory.fill - local.get $1 local.get $2 + local.get $3 i32.ne if local.get $0 - local.get $1 + local.get $3 i32.store local.get $0 - local.get $1 + local.get $3 i32.store offset=4 - local.get $0 - local.get $1 - call $~lib/rt/itcms/__link + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end local.get $0 - local.get $6 + local.get $1 i32.store offset=8 end ) @@ -3167,50 +3057,51 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.extend8_s - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.extend8_s + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -3227,6 +3118,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -3235,9 +3127,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -3258,14 +3149,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -3285,7 +3176,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -3296,9 +3187,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -3307,9 +3201,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -3343,27 +3240,27 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|1 - local.get $0 + local.get $2 i32.extend8_s i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3373,62 +3270,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load8_u - local.get $0 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if i32.const 0 i32.const 1568 @@ -3437,14 +3334,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3454,62 +3351,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load8_u - local.get $0 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -3519,14 +3416,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -3539,18 +3436,18 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|3 - local.get $0 + local.get $2 i32.extend8_s i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3560,62 +3457,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load8_u - local.get $0 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -3625,14 +3522,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3642,62 +3539,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load8_u - local.get $0 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -3707,14 +3604,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -3727,10 +3624,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3739,17 +3634,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $2 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -3758,31 +3653,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i64.const 0 i64.store - local.get $3 + local.get $8 i32.const 16 i32.const 4 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $10 i32.store - local.get $3 + local.get $10 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $10 i32.const 0 i32.store offset=4 - local.get $3 + local.get $10 i32.const 0 i32.store offset=8 - local.get $3 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $9 i32.const 1073741820 i32.gt_u if @@ -3794,61 +3686,64 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 8 - local.get $5 + local.get $9 i32.const 8 i32.gt_u select - local.tee $8 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $8 i32.store offset=4 - local.get $6 local.get $8 + local.get $11 call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $10 + local.get $8 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 - i32.store offset=4 - local.get $3 local.get $8 + if + local.get $10 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $8 + i32.store offset=4 + local.get $10 + local.get $11 i32.store offset=8 - local.get $3 - local.get $5 + local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $6 + local.get $10 i32.store loop $for-loop|0 + local.get $5 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $2 i32.add - local.tee $1 + local.tee $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $10 local.get $0 - local.get $1 + local.get $6 i32.load8_s call $~lib/array/Array#__set local.get $0 @@ -3856,41 +3751,41 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|0 end end - local.get $3 + local.get $10 local.get $0 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|4 - local.get $3 + local.get $10 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $2 i32.extend8_s i32.const -1028477379 i32.mul @@ -3900,67 +3795,67 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $3 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 + local.get $3 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $6 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -3970,21 +3865,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $10 local.get $1 - local.get $3 - local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $2 + local.get $4 i32.load offset=20 i32.ne if @@ -3996,18 +3891,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|6 - local.get $4 + local.get $1 i32.extend8_s i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4018,61 +3913,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -4082,14 +3977,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4100,61 +3995,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -4163,14 +4058,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -4183,18 +4078,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|8 - local.get $4 + local.get $1 i32.extend8_s i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4205,61 +4100,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -4268,14 +4163,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4286,61 +4181,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -4350,14 +4245,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend8_s i32.const -1028477379 i32.mul @@ -4368,61 +4263,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -4431,14 +4326,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -4450,9 +4345,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -4510,7 +4405,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -4518,7 +4413,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -4526,13 +4421,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -4540,19 +4435,21 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load8_u local.tee $8 i32.store8 local.get $2 local.get $8 + i32.const 255 + i32.and i32.const -1028477379 i32.mul i32.const 374761394 @@ -4562,29 +4459,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -4597,30 +4494,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $0 + local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -4635,54 +4538,55 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -4696,7 +4600,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -4704,9 +4609,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -4740,18 +4643,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -4767,7 +4670,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -4802,51 +4705,52 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -4863,6 +4767,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -4871,9 +4776,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -4894,14 +4798,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -4921,7 +4825,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -4948,94 +4852,95 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $10 i32.store loop $for-loop|1 - local.get $0 + local.get $1 i32.const 255 i32.and i32.const 100 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|0 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -5044,80 +4949,81 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 + local.get $10 + local.get $1 call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find1 + block $__inlined_func$~lib/set/Set#find1 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|02 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -5127,14 +5033,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -5147,85 +5053,86 @@ unreachable end i32.const 50 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 i32.const 255 i32.and i32.const 100 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find4 + block $__inlined_func$~lib/set/Set#find4 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|05 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -5235,80 +5142,81 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u + local.get $10 local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find7 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find7 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|08 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load8_u - local.get $0 + local.get $3 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -5318,14 +5226,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -5339,8 +5247,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i32.const 0 - local.set $0 local.get $1 i32.const 4 i32.sub @@ -5350,17 +5256,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $8 i32.const 0 i32.store - local.get $2 + local.get $10 i32.load offset=8 - local.set $10 - local.get $2 + local.set $6 + local.get $10 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $1 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -5376,24 +5282,21 @@ i32.const 16 i32.const 6 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $9 i32.store - local.get $3 + local.get $9 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $9 i32.const 0 i32.store offset=4 - local.get $3 + local.get $9 i32.const 0 i32.store offset=8 - local.get $3 + local.get $9 i32.const 0 i32.store offset=12 - local.get $5 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -5405,51 +5308,54 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 8 - local.get $5 + local.get $1 i32.const 8 i32.gt_u select - local.tee $8 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $11 i32.store offset=4 - local.get $6 - local.get $8 - call $~lib/memory/memory.fill + local.get $11 local.get $3 - local.get $6 + call $~lib/memory/memory.fill + local.get $9 + local.get $11 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 + local.get $11 + if + local.get $9 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 + local.get $11 i32.store offset=4 + local.get $9 local.get $3 - local.get $8 i32.store offset=8 - local.get $3 - local.get $5 + local.get $9 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $8 + local.get $9 i32.store loop $for-loop|0 + local.get $4 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $4 i32.const 3 i32.shl - local.get $10 + local.get $6 i32.add local.tee $1 i32.load offset=4 @@ -5457,122 +5363,124 @@ i32.and i32.eqz if - local.get $3 - local.get $0 + local.get $9 + local.get $2 local.get $1 i32.load8_u call $~lib/array/Array#__set - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 end - local.get $7 + local.get $4 i32.const 1 i32.add - local.set $7 + local.set $4 br $for-loop|0 end end - local.get $3 - local.get $0 + local.get $9 + local.get $2 i32.const 0 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + local.get $9 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $3 i32.store offset=8 loop $for-loop|4 - local.get $3 + local.get $9 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if - local.get $3 - local.get $4 - call $~lib/array/Array#__get - local.tee $6 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.set $0 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 16 - i32.shr_u + local.get $9 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find10 + call $~lib/array/Array#__get + local.set $2 + block $__inlined_func$~lib/set/Set#find10 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $2 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 - local.tee $7 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load8_u - local.get $6 + local.get $2 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $0 end - local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -5582,21 +5490,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $3 - local.get $4 + local.get $9 + local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|4 end end - local.get $1 + local.get $3 i32.load offset=20 - local.get $2 + local.get $10 i32.load offset=20 i32.ne if @@ -5608,59 +5516,61 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|6 - local.get $4 + local.get $0 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find13 + block $__inlined_func$~lib/set/Set#find13 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|014 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5668,25 +5578,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|014 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -5696,54 +5605,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 + local.get $10 + local.get $0 call $~lib/set/Set#delete - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find16 + block $__inlined_func$~lib/set/Set#find16 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5751,25 +5662,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|017 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -5778,14 +5688,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|6 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -5798,59 +5708,61 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|8 - local.get $4 + local.get $0 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find19 + block $__inlined_func$~lib/set/Set#find19 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5858,25 +5770,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|020 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -5885,54 +5796,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u + local.get $10 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find22 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find22 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -5940,25 +5853,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|023 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -5968,54 +5880,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - call $~lib/set/Set#delete - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 255 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761394 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u + local.get $10 local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find25 + call $~lib/set/Set#delete + block $__inlined_func$~lib/set/Set#find25 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 255 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761394 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -6023,25 +5937,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load8_u - local.get $4 + local.get $1 i32.const 255 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|026 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -6050,14 +5963,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|8 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -6069,9 +5982,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $10 call $~lib/set/Set#clear - local.get $2 + local.get $10 i32.load offset=20 if i32.const 0 @@ -6129,7 +6042,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -6137,7 +6050,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -6145,13 +6058,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -6159,14 +6072,14 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load16_s local.tee $8 i32.store16 @@ -6182,29 +6095,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -6217,30 +6130,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -6255,53 +6174,54 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -6315,7 +6235,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -6323,9 +6244,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -6359,18 +6278,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -6386,7 +6305,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -6462,50 +6381,51 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.extend16_s - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.extend16_s + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -6522,6 +6442,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -6530,9 +6451,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -6553,14 +6473,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -6580,7 +6500,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -6607,27 +6527,27 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|1 - local.get $0 + local.get $2 i32.extend16_s i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6637,62 +6557,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load16_u - local.get $0 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if i32.const 0 i32.const 1568 @@ -6701,14 +6621,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6718,62 +6638,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load16_u - local.get $0 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -6783,14 +6703,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -6803,18 +6723,18 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|3 - local.get $0 + local.get $2 i32.extend16_s i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6824,62 +6744,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load16_u - local.get $0 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -6889,14 +6809,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -6906,62 +6826,62 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $3 i32.load16_u - local.get $0 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -6971,14 +6891,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -6991,10 +6911,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -7003,17 +6921,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $2 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -7022,31 +6940,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i64.const 0 i64.store - local.get $3 + local.get $8 i32.const 16 i32.const 8 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $10 i32.store - local.get $3 + local.get $10 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $10 i32.const 0 i32.store offset=4 - local.get $3 + local.get $10 i32.const 0 i32.store offset=8 - local.get $3 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $9 i32.const 536870910 i32.gt_u if @@ -7058,63 +6973,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 8 - local.get $5 + local.get $9 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $8 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $8 i32.store offset=4 - local.get $6 local.get $8 + local.get $11 call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $10 + local.get $8 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 - i32.store offset=4 - local.get $3 local.get $8 + if + local.get $10 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $8 + i32.store offset=4 + local.get $10 + local.get $11 i32.store offset=8 - local.get $3 - local.get $5 + local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $6 + local.get $10 i32.store loop $for-loop|0 + local.get $5 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $2 i32.add - local.tee $1 + local.tee $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $10 local.get $0 - local.get $1 + local.get $6 i32.load16_s call $~lib/array/Array#__set local.get $0 @@ -7122,41 +7040,41 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|0 end end - local.get $3 + local.get $10 local.get $0 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|4 - local.get $3 + local.get $10 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $2 i32.extend16_s i32.const -1028477379 i32.mul @@ -7166,67 +7084,67 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $3 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 + local.get $3 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $6 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -7236,21 +7154,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $10 local.get $1 - local.get $3 - local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $2 + local.get $4 i32.load offset=20 i32.ne if @@ -7262,18 +7180,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|6 - local.get $4 + local.get $1 i32.extend16_s i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7284,61 +7202,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -7348,14 +7266,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7366,61 +7284,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -7429,14 +7347,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -7449,18 +7367,18 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|8 - local.get $4 + local.get $1 i32.extend16_s i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7471,61 +7389,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -7534,14 +7452,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7552,61 +7470,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -7616,14 +7534,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.extend16_s i32.const -1028477379 i32.mul @@ -7634,61 +7552,61 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $3 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -7697,14 +7615,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -7716,9 +7634,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -7776,7 +7694,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -7784,7 +7702,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -7792,13 +7710,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -7806,19 +7724,21 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load16_u local.tee $8 i32.store16 local.get $2 local.get $8 + i32.const 65535 + i32.and i32.const -1028477379 i32.mul i32.const 374761395 @@ -7828,29 +7748,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -7863,30 +7783,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -7901,54 +7827,55 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -7962,7 +7889,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -7970,9 +7898,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -8006,18 +7932,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -8033,7 +7959,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -8070,51 +7996,52 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -8131,6 +8058,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -8139,9 +8067,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -8162,14 +8089,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -8189,7 +8116,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -8216,94 +8143,95 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $10 i32.store loop $for-loop|1 - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 100 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|0 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|0 end end i32.const 0 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -8312,80 +8240,81 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u + local.get $10 local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find1 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find1 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|02 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|02 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -8395,14 +8324,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -8415,85 +8344,86 @@ unreachable end i32.const 50 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 100 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u - local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find4 + block $__inlined_func$~lib/set/Set#find4 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|05 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|05 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -8503,80 +8433,81 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $0 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - i32.const 15 - i32.shr_u - local.get $1 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - i32.const 13 - i32.shr_u - local.get $1 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - i32.const 16 - i32.shr_u + local.get $10 local.get $1 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find7 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find7 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $1 + local.tee $3 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $5 + i32.const 15 + i32.shr_u + local.get $5 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $5 + i32.const 13 + i32.shr_u + local.get $5 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $5 + i32.const 16 + i32.shr_u + local.get $5 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 loop $while-continue|08 - local.get $1 + local.get $5 if - local.get $1 + local.get $5 + local.get $5 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $1 + local.get $5 i32.load16_u - local.get $0 + local.get $3 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + drop + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $5 br $while-continue|08 end end i32.const 0 - local.set $1 end - local.get $1 i32.eqz if i32.const 0 @@ -8586,14 +8517,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 100 i32.ne @@ -8607,8 +8538,6 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - i32.const 0 - local.set $0 local.get $1 i32.const 4 i32.sub @@ -8618,17 +8547,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $8 i32.const 0 i32.store - local.get $2 + local.get $10 i32.load offset=8 - local.set $10 - local.get $2 + local.set $6 + local.get $10 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $1 + local.get $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -8644,24 +8573,21 @@ i32.const 16 i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $9 i32.store - local.get $3 + local.get $9 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $9 i32.const 0 i32.store offset=4 - local.get $3 + local.get $9 i32.const 0 i32.store offset=8 - local.get $3 + local.get $9 i32.const 0 i32.store offset=12 - local.get $5 + local.get $1 i32.const 536870910 i32.gt_u if @@ -8673,53 +8599,56 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 8 - local.get $5 + local.get $1 i32.const 8 i32.gt_u select i32.const 1 i32.shl - local.tee $8 + local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $11 i32.store offset=4 - local.get $6 - local.get $8 - call $~lib/memory/memory.fill + local.get $11 local.get $3 - local.get $6 + call $~lib/memory/memory.fill + local.get $9 + local.get $11 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 + local.get $11 + if + local.get $9 + local.get $11 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $9 + local.get $11 i32.store offset=4 + local.get $9 local.get $3 - local.get $8 i32.store offset=8 - local.get $3 - local.get $5 + local.get $9 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $8 + local.get $9 i32.store loop $for-loop|0 + local.get $4 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $4 i32.const 3 i32.shl - local.get $10 + local.get $6 i32.add local.tee $1 i32.load offset=4 @@ -8727,122 +8656,124 @@ i32.and i32.eqz if - local.get $3 - local.get $0 + local.get $9 + local.get $2 local.get $1 i32.load16_u call $~lib/array/Array#__set - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 end - local.get $7 + local.get $4 i32.const 1 i32.add - local.set $7 + local.set $4 br $for-loop|0 end end - local.get $3 - local.get $0 + local.get $9 + local.get $2 i32.const 1 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 - local.get $0 + local.get $9 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $9 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $3 i32.store offset=8 loop $for-loop|4 - local.get $3 + local.get $9 i32.load offset=12 - local.get $4 + local.get $0 i32.gt_s if - local.get $3 - local.get $4 - call $~lib/array/Array#__get - local.tee $6 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.set $0 - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 16 - i32.shr_u + local.get $9 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find10 + call $~lib/array/Array#__get + local.set $2 + block $__inlined_func$~lib/set/Set#find10 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $2 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|011 - local.get $0 + local.get $1 if - local.get $0 + local.get $1 + local.get $1 i32.load offset=4 - local.tee $7 + local.tee $4 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 + local.get $1 i32.load16_u - local.get $6 + local.get $2 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + drop + local.get $4 i32.const -2 i32.and - local.set $0 + local.set $1 br $while-continue|011 end end i32.const 0 - local.set $0 end - local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 @@ -8852,21 +8783,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $3 - local.get $4 + local.get $9 + local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|4 end end - local.get $1 + local.get $3 i32.load offset=20 - local.get $2 + local.get $10 i32.load offset=20 i32.ne if @@ -8878,59 +8809,61 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|6 - local.get $4 + local.get $0 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find13 + block $__inlined_func$~lib/set/Set#find13 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|014 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -8938,25 +8871,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find13 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|014 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -8966,54 +8898,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - call $~lib/set/Set#delete - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u + local.get $10 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find16 + call $~lib/set/Set#delete + block $__inlined_func$~lib/set/Set#find16 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|017 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9021,25 +8955,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find16 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|017 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -9048,14 +8981,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|6 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -9068,141 +9001,144 @@ unreachable end i32.const 0 - local.set $4 + local.set $0 loop $for-loop|8 - local.get $4 + local.get $0 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u - local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find19 + block $__inlined_func$~lib/set/Set#find19 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|020 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $4 - i32.const 65535 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 - i32.const -2 - i32.and - local.set $0 - br $while-continue|020 - end - end - i32.const 0 - local.set $0 - end - local.get $0 - if - i32.const 0 - i32.const 1568 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $4 - call $~lib/set/Set#add - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u + i32.and + if (result i32) + i32.const 0 + else + local.get $2 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/set/Set#find19 + drop + local.get $3 + i32.const -2 + i32.and + local.set $2 + br $while-continue|020 + end + end + i32.const 0 + end + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $10 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find22 + call $~lib/set/Set#add + block $__inlined_func$~lib/set/Set#find22 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|023 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9210,25 +9146,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find22 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|023 end end i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 @@ -9238,54 +9173,56 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $4 - call $~lib/set/Set#delete - local.get $2 - i32.load - local.get $2 - i32.load offset=4 - local.get $4 - i32.const 65535 - i32.and - i32.const -1028477379 - i32.mul - i32.const 374761395 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - i32.const 15 - i32.shr_u - local.get $0 - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - i32.const 13 - i32.shr_u - local.get $0 - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - i32.const 16 - i32.shr_u + local.get $10 local.get $0 - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find25 + call $~lib/set/Set#delete + block $__inlined_func$~lib/set/Set#find25 (result i32) + local.get $10 + i32.load + local.get $10 + i32.load offset=4 + local.get $0 + local.tee $1 + i32.const 65535 + i32.and + i32.const -1028477379 + i32.mul + i32.const 374761395 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|026 - local.get $0 + local.get $2 if - local.get $0 + local.get $2 + local.get $2 i32.load offset=4 local.tee $3 i32.const 1 @@ -9293,25 +9230,24 @@ if (result i32) i32.const 0 else - local.get $0 + local.get $2 i32.load16_u - local.get $4 + local.get $1 i32.const 65535 i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find25 + drop local.get $3 i32.const -2 i32.and - local.set $0 + local.set $2 br $while-continue|026 end end i32.const 0 - local.set $0 end - local.get $0 if i32.const 0 i32.const 1568 @@ -9320,14 +9256,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $for-loop|8 end end - local.get $2 + local.get $10 i32.load offset=20 i32.const 50 i32.ne @@ -9339,9 +9275,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $10 call $~lib/set/Set#clear - local.get $2 + local.get $10 i32.load offset=20 if i32.const 0 @@ -9399,7 +9335,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -9407,7 +9343,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -9415,13 +9351,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -9429,14 +9365,14 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load local.tee $8 i32.store @@ -9451,29 +9387,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -9486,30 +9422,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -9524,52 +9466,53 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -9581,7 +9524,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -9589,9 +9533,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -9625,18 +9567,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -9652,7 +9594,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -9728,49 +9670,50 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -9785,6 +9728,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -9793,9 +9737,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -9816,14 +9759,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -9843,7 +9786,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -9870,26 +9813,26 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|0 - local.get $0 + local.get $2 i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -9898,60 +9841,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if i32.const 0 i32.const 1568 @@ -9960,14 +9903,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -9976,60 +9919,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -10039,14 +9982,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -10059,17 +10002,17 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 100 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10078,60 +10021,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -10141,14 +10084,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10157,60 +10100,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -10220,14 +10163,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -10240,10 +10183,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -10252,17 +10193,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $2 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -10271,31 +10212,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i64.const 0 i64.store - local.get $3 + local.get $8 i32.const 16 i32.const 12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $10 i32.store - local.get $3 + local.get $10 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $10 i32.const 0 i32.store offset=4 - local.get $3 + local.get $10 i32.const 0 i32.store offset=8 - local.get $3 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $9 i32.const 268435455 i32.gt_u if @@ -10307,63 +10245,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 8 - local.get $5 + local.get $9 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $8 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $8 i32.store offset=4 - local.get $6 local.get $8 + local.get $11 call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $10 + local.get $8 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 - i32.store offset=4 - local.get $3 local.get $8 + if + local.get $10 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $8 + i32.store offset=4 + local.get $10 + local.get $11 i32.store offset=8 - local.get $3 - local.get $5 + local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $6 + local.get $10 i32.store loop $for-loop|01 + local.get $5 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $2 i32.add - local.tee $1 + local.tee $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $10 local.get $0 - local.get $1 + local.get $6 i32.load call $~lib/array/Array#__set local.get $0 @@ -10371,41 +10312,41 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|01 end end - local.get $3 + local.get $10 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $3 + local.get $10 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10414,65 +10355,65 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $3 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 + local.get $3 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 - local.get $0 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -10482,21 +10423,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $10 local.get $1 - local.get $3 - local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|2 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $2 + local.get $4 i32.load offset=20 i32.ne if @@ -10508,17 +10449,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|3 - local.get $4 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10528,59 +10469,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -10590,14 +10531,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10607,59 +10548,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -10668,14 +10609,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -10688,17 +10629,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|4 - local.get $4 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10708,59 +10649,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -10769,14 +10710,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10786,59 +10727,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -10848,14 +10789,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -10865,59 +10806,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -10926,14 +10867,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -10945,9 +10886,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -11005,7 +10946,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $6 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -11013,7 +10954,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $6 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -11021,13 +10962,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $4 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 @@ -11035,14 +10976,14 @@ local.get $7 i32.ne if - local.get $7 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $7 + local.get $4 i32.load local.tee $8 i32.store @@ -11057,29 +10998,29 @@ i32.const 668265263 i32.mul local.tee $8 - local.get $8 i32.const 15 i32.shr_u + local.get $8 i32.xor i32.const -2048144777 i32.mul local.tee $8 - local.get $8 i32.const 13 i32.shr_u + local.get $8 i32.xor i32.const -1028477379 i32.mul local.tee $8 - local.get $8 i32.const 16 i32.shr_u + local.get $8 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $6 + local.get $5 i32.add local.tee $8 i32.load @@ -11092,30 +11033,36 @@ i32.add local.set $2 end - local.get $7 + local.get $4 i32.const 8 i32.add - local.set $7 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $6 + local.get $5 i32.store - local.get $0 - local.get $6 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -11130,52 +11077,53 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -11187,7 +11135,8 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -11195,9 +11144,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -11231,18 +11178,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -11258,7 +11205,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -11295,49 +11242,50 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - local.tee $2 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $1 - local.get $1 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $1 - local.get $1 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $1 - local.get $1 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + local.tee $2 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $1 + i32.const 15 + i32.shr_u + local.get $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $1 + i32.const 13 + i32.shr_u + local.get $1 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $1 + i32.const 16 + i32.shr_u + local.get $1 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 loop $while-continue|0 local.get $1 if + local.get $1 local.get $1 i32.load offset=4 local.tee $3 @@ -11352,6 +11300,7 @@ i32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -11360,9 +11309,8 @@ end end i32.const 0 - local.set $1 end - local.get $1 + local.tee $1 i32.eqz if return @@ -11383,14 +11331,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.lt_u select @@ -11410,7 +11358,7 @@ end if local.get $0 - local.get $2 + local.get $1 call $~lib/set/Set#rehash end ) @@ -11437,26 +11385,26 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 call $~lib/set/Set#constructor - local.tee $2 + local.tee $4 i32.store loop $for-loop|0 - local.get $0 + local.get $2 i32.const 100 i32.lt_u if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11465,60 +11413,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 if i32.const 0 i32.const 1568 @@ -11527,14 +11475,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11543,60 +11491,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -11606,14 +11554,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -11626,17 +11574,17 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 100 i32.lt_u if - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11645,60 +11593,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -11708,14 +11656,14 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $2 - local.get $0 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11724,60 +11672,60 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul - local.tee $1 + local.tee $3 + local.get $3 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $1 + local.get $3 if - local.get $1 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - local.get $1 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $1 + local.set $3 end - local.get $1 + local.get $3 i32.eqz if i32.const 0 @@ -11787,14 +11735,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -11807,10 +11755,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - local.set $0 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -11819,17 +11765,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $2 + local.get $4 i32.load offset=8 - local.set $10 - local.get $2 + local.set $2 + local.get $4 i32.load offset=16 - local.tee $11 - local.set $5 - local.get $1 + local.tee $7 + local.set $9 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -11838,31 +11784,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $8 i64.const 0 i64.store - local.get $3 + local.get $8 i32.const 16 i32.const 14 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $10 i32.store - local.get $3 + local.get $10 i32.const 0 i32.store - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $3 + local.get $10 i32.const 0 i32.store offset=4 - local.get $3 + local.get $10 i32.const 0 i32.store offset=8 - local.get $3 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $9 i32.const 268435455 i32.gt_u if @@ -11874,63 +11817,66 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $9 i32.const 8 - local.get $5 + local.get $9 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $8 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $8 i32.store offset=4 - local.get $6 local.get $8 + local.get $11 call $~lib/memory/memory.fill - local.get $3 - local.get $6 + local.get $10 + local.get $8 i32.store - local.get $3 - local.get $6 - call $~lib/rt/itcms/__link - local.get $3 - local.get $6 - i32.store offset=4 - local.get $3 local.get $8 + if + local.get $10 + local.get $8 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $8 + i32.store offset=4 + local.get $10 + local.get $11 i32.store offset=8 - local.get $3 - local.get $5 + local.get $10 + local.get $9 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $6 + local.get $10 i32.store loop $for-loop|01 + local.get $5 local.get $7 - local.get $11 i32.lt_s if - local.get $7 + local.get $5 i32.const 3 i32.shl - local.get $10 + local.get $2 i32.add - local.tee $1 + local.tee $6 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 + local.get $10 local.get $0 - local.get $1 + local.get $6 i32.load call $~lib/array/Array#__set local.get $0 @@ -11938,41 +11884,41 @@ i32.add local.set $0 end - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|01 end end - local.get $3 + local.get $10 local.get $0 i32.const 2 i32.const 0 call $~lib/array/ensureCapacity - local.get $3 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $1 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $3 + local.get $10 i32.load offset=12 - local.get $4 + local.get $1 i32.gt_s if - local.get $3 - local.get $4 + local.get $10 + local.get $1 call $~lib/array/Array#__get - local.tee $6 + local.tee $2 i32.const -1028477379 i32.mul i32.const 374761397 @@ -11981,65 +11927,65 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul - local.tee $0 + local.tee $3 + local.get $3 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul - local.set $0 - local.get $2 + local.set $3 + local.get $4 i32.load - local.get $2 + local.get $4 i32.load offset=4 - local.get $0 + local.get $3 + local.get $3 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $7 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 - local.get $0 + local.get $2 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $7 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -12049,21 +11995,21 @@ call $~lib/builtins/abort unreachable end + local.get $0 + local.get $10 local.get $1 - local.get $3 - local.get $4 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|2 end end - local.get $1 + local.get $0 i32.load offset=20 - local.get $2 + local.get $4 i32.load offset=20 i32.ne if @@ -12075,17 +12021,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|3 - local.get $4 + local.get $1 i32.const 50 i32.lt_u if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12095,59 +12041,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -12157,14 +12103,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12174,59 +12120,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -12235,14 +12181,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -12255,17 +12201,17 @@ unreachable end i32.const 0 - local.set $4 + local.set $1 loop $for-loop|4 - local.get $4 + local.get $1 i32.const 50 i32.lt_u if - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12275,59 +12221,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -12336,14 +12282,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#add - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12353,59 +12299,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -12415,14 +12361,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $4 + local.get $1 call $~lib/set/Set#delete - local.get $2 + local.get $4 i32.load - local.get $2 - i32.load offset=4 local.get $4 + i32.load offset=4 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -12432,59 +12378,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $3 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $4 - local.get $0 + local.get $1 + local.get $3 i32.load i32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $3 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -12493,14 +12439,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|4 end end - local.get $2 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -12512,9 +12458,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 call $~lib/set/Set#clear - local.get $2 + local.get $4 i32.load offset=20 if i32.const 0 @@ -12527,72 +12473,73 @@ global.get $~lib/memory/__stack_pointer i32.const 12 i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 18240 - i32.const 18288 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find + global.set $~lib/memory/__stack_pointer + return + end + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -12607,6 +12554,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $2 i32.const -2 i32.and @@ -12615,9 +12563,7 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) @@ -12657,7 +12603,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -12665,7 +12611,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -12673,13 +12619,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $4 + local.set $8 local.get $3 local.set $2 loop $while-continue|0 @@ -12687,19 +12633,18 @@ local.get $8 i32.ne if - local.get $8 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 i64.load local.tee $6 i64.store local.get $2 - local.get $1 local.get $6 i32.wrap_i64 i32.const -1028477379 @@ -12722,28 +12667,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add local.tee $9 i32.load @@ -12756,30 +12702,36 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 16 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $5 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -12794,64 +12746,65 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -12863,7 +12816,8 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -12871,9 +12825,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -12907,18 +12859,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 4 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -12934,7 +12886,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -13010,60 +12962,61 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -13078,6 +13031,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -13086,9 +13040,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -13109,14 +13062,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -13136,7 +13089,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -13147,9 +13100,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -13158,9 +13114,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -13173,9 +13132,9 @@ ) (func $std/set/testNumeric (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -13195,23 +13154,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 call $~lib/set/Set#constructor - local.tee $4 + local.tee $11 i32.store loop $for-loop|0 - local.get $3 + local.get $1 i64.const 100 i64.lt_s if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13221,11 +13180,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13236,14 +13195,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|0 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -13256,14 +13215,14 @@ unreachable end i64.const 50 - local.set $3 + local.set $1 loop $for-loop|1 - local.get $3 + local.get $1 i64.const 100 i64.lt_s if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13274,11 +13233,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13289,14 +13248,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|1 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -13309,8 +13268,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -13319,18 +13278,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $9 i32.const 0 i32.store - local.get $4 + local.get $11 i32.load offset=8 - local.set $11 - local.get $4 + local.set $7 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $2 + local.tee $8 + local.set $2 + local.get $9 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -13339,31 +13297,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $1 + local.get $5 i32.const 16 i32.const 16 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $10 i32.store - local.get $1 + local.get $10 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $10 i32.const 0 i32.store offset=4 - local.get $1 + local.get $10 i32.const 0 i32.store offset=8 - local.get $1 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $2 i32.const 134217727 i32.gt_u if @@ -13375,53 +13330,56 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 8 - local.get $5 + local.get $2 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $12 + local.get $5 call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $10 + local.get $12 i32.store - local.get $1 - local.get $6 - call $~lib/rt/itcms/__link - local.get $1 - local.get $6 + local.get $12 + if + local.get $10 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $12 i32.store offset=4 - local.get $1 - local.get $9 - i32.store offset=8 - local.get $1 + local.get $10 local.get $5 + i32.store offset=8 + local.get $10 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $1 + local.get $9 + local.get $10 i32.store loop $for-loop|01 + local.get $4 local.get $8 - local.get $12 i32.lt_s if - local.get $8 + local.get $4 i32.const 4 i32.shl - local.get $11 + local.get $7 i32.add local.tee $2 i32.load offset=8 @@ -13429,7 +13387,7 @@ i32.and i32.eqz if - local.get $1 + local.get $10 local.get $0 local.get $2 i64.load @@ -13439,40 +13397,40 @@ i32.add local.set $0 end - local.get $8 + local.get $4 i32.const 1 i32.add - local.set $8 + local.set $4 br $for-loop|01 end end - local.get $1 + local.get $10 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $2 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $1 + local.get $10 i32.load offset=12 - local.get $7 + local.get $3 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $11 + local.get $10 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -13484,21 +13442,21 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - local.get $7 + local.get $0 + local.get $10 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 + local.set $3 br $for-loop|2 end end - local.get $2 + local.get $0 i32.load offset=20 - local.get $4 + local.get $11 i32.load offset=20 i32.ne if @@ -13510,14 +13468,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $1 loop $for-loop|3 - local.get $3 + local.get $1 i64.const 50 i64.lt_s if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13528,11 +13486,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13542,14 +13500,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|3 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -13562,14 +13520,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $1 loop $for-loop|4 - local.get $3 + local.get $1 i64.const 50 i64.lt_s if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13579,11 +13537,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -13594,11 +13552,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -13608,14 +13566,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -13627,9 +13585,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 call $~lib/set/Set#clear - local.get $4 + local.get $11 i32.load offset=20 if i32.const 0 @@ -13654,60 +13612,61 @@ ) (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -13722,6 +13681,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $2 i32.const -2 i32.and @@ -13730,9 +13690,7 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) @@ -13772,7 +13730,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -13780,7 +13738,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $5 + local.tee $7 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -13788,13 +13746,13 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $4 + local.set $8 local.get $3 local.set $2 loop $while-continue|0 @@ -13802,19 +13760,18 @@ local.get $8 i32.ne if - local.get $8 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 i64.load local.tee $6 i64.store local.get $2 - local.get $1 local.get $6 i32.wrap_i64 i32.const -1028477379 @@ -13837,28 +13794,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add local.tee $9 i32.load @@ -13871,30 +13829,36 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 16 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $5 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $5 + local.get $7 i32.store offset=12 local.get $0 local.get $0 @@ -13909,64 +13873,65 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -13978,7 +13943,8 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -13986,9 +13952,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -14022,18 +13986,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 4 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -14049,7 +14013,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -14086,60 +14050,61 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $1 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $1 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 local.tee $3 @@ -14154,6 +14119,7 @@ i64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -14162,9 +14128,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -14185,14 +14150,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -14212,15 +14177,15 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) (func $std/set/testNumeric (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -14240,23 +14205,23 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 call $~lib/set/Set#constructor - local.tee $4 + local.tee $11 i32.store loop $for-loop|0 - local.get $3 + local.get $1 i64.const 100 i64.lt_u if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14266,11 +14231,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14281,14 +14246,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|0 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -14301,14 +14266,14 @@ unreachable end i64.const 50 - local.set $3 + local.set $1 loop $for-loop|1 - local.get $3 + local.get $1 i64.const 100 i64.lt_u if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14319,11 +14284,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14334,14 +14299,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|1 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 100 i32.ne @@ -14354,8 +14319,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -14364,18 +14329,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $9 i32.const 0 i32.store - local.get $4 + local.get $11 i32.load offset=8 - local.set $11 - local.get $4 + local.set $7 + local.get $11 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $2 + local.tee $8 + local.set $2 + local.get $9 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -14384,31 +14348,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $1 + local.get $5 i32.const 16 i32.const 18 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $10 i32.store - local.get $1 + local.get $10 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $10 i32.const 0 i32.store offset=4 - local.get $1 + local.get $10 i32.const 0 i32.store offset=8 - local.get $1 + local.get $10 i32.const 0 i32.store offset=12 - local.get $5 + local.get $2 i32.const 134217727 i32.gt_u if @@ -14420,53 +14381,56 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 8 - local.get $5 + local.get $2 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $12 i32.store offset=4 - local.get $6 - local.get $9 + local.get $12 + local.get $5 call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $10 + local.get $12 i32.store - local.get $1 - local.get $6 - call $~lib/rt/itcms/__link - local.get $1 - local.get $6 + local.get $12 + if + local.get $10 + local.get $12 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $10 + local.get $12 i32.store offset=4 - local.get $1 - local.get $9 - i32.store offset=8 - local.get $1 + local.get $10 local.get $5 + i32.store offset=8 + local.get $10 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $1 + local.get $9 + local.get $10 i32.store loop $for-loop|01 + local.get $4 local.get $8 - local.get $12 i32.lt_s if - local.get $8 + local.get $4 i32.const 4 i32.shl - local.get $11 + local.get $7 i32.add local.tee $2 i32.load offset=8 @@ -14474,7 +14438,7 @@ i32.and i32.eqz if - local.get $1 + local.get $10 local.get $0 local.get $2 i64.load @@ -14484,40 +14448,40 @@ i32.add local.set $0 end - local.get $8 + local.get $4 i32.const 1 i32.add - local.set $8 + local.set $4 br $for-loop|01 end end - local.get $1 + local.get $10 local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $1 + local.get $10 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $10 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor - local.tee $2 + local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $1 + local.get $10 i32.load offset=12 - local.get $7 + local.get $3 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $11 + local.get $10 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -14529,21 +14493,21 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - local.get $7 + local.get $0 + local.get $10 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 + local.set $3 br $for-loop|2 end end - local.get $2 + local.get $0 i32.load offset=20 - local.get $4 + local.get $11 i32.load offset=20 i32.ne if @@ -14555,14 +14519,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $1 loop $for-loop|3 - local.get $3 + local.get $1 i64.const 50 i64.lt_u if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14573,11 +14537,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14587,14 +14551,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|3 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -14607,14 +14571,14 @@ unreachable end i64.const 0 - local.set $3 + local.set $1 loop $for-loop|4 - local.get $3 + local.get $1 i64.const 50 i64.lt_u if - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14624,11 +14588,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#add - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -14639,11 +14603,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#delete - local.get $4 - local.get $3 + local.get $11 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -14653,14 +14617,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i64.const 1 i64.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $4 + local.get $11 i32.load offset=20 i32.const 50 i32.ne @@ -14672,9 +14636,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $11 call $~lib/set/Set#clear - local.get $4 + local.get $11 i32.load offset=20 if i32.const 0 @@ -14700,11 +14664,11 @@ (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f32) (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -14733,7 +14697,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -14749,33 +14713,33 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $8 + local.tee $4 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $5 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $5 - local.get $8 + local.get $4 + local.get $7 i32.ne if - local.get $8 + local.get $4 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $8 + local.get $4 f32.load - local.tee $4 + local.tee $8 f32.store local.get $2 - local.get $4 + local.get $8 i32.reinterpret_f32 i32.const -1028477379 i32.mul @@ -14786,29 +14750,29 @@ i32.const 668265263 i32.mul local.tee $9 - local.get $9 i32.const 15 i32.shr_u + local.get $9 i32.xor i32.const -2048144777 i32.mul local.tee $9 - local.get $9 i32.const 13 i32.shr_u + local.get $9 i32.xor i32.const -1028477379 i32.mul local.tee $9 - local.get $9 i32.const 16 i32.shr_u + local.get $9 i32.xor local.get $1 i32.and i32.const 2 i32.shl - local.get $7 + local.get $5 i32.add local.tee $9 i32.load @@ -14821,28 +14785,34 @@ i32.add local.set $2 end - local.get $8 + local.get $4 i32.const 8 i32.add - local.set $8 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $7 + local.get $5 i32.store - local.get $0 - local.get $7 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $6 i32.store offset=12 @@ -14859,53 +14829,54 @@ (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -14917,7 +14888,8 @@ f32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -14925,9 +14897,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -14961,18 +14931,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $4 i32.const 3 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -14988,7 +14958,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $4 + local.get $3 i32.and i32.const 2 i32.shl @@ -15025,49 +14995,50 @@ (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.reinterpret_f32 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.reinterpret_f32 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=4 local.tee $3 @@ -15082,6 +15053,7 @@ f32.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -15090,9 +15062,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -15113,14 +15084,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 4 i32.lt_u select @@ -15140,7 +15111,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -15176,16 +15147,16 @@ i32.store offset=8 local.get $0 call $~lib/set/Set#constructor - local.tee $3 + local.tee $12 i32.store loop $for-loop|0 local.get $2 f32.const 100 f32.lt if - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15198,59 +15169,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find loop $while-continue|0 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $5 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|0 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -15259,12 +15230,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15277,59 +15248,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find1 loop $while-continue|02 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find1 - local.get $5 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|02 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15346,7 +15317,7 @@ br $for-loop|0 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -15365,9 +15336,9 @@ f32.const 100 f32.lt if - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15380,59 +15351,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find4 loop $while-continue|05 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find4 - local.get $5 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|05 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15442,12 +15413,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15460,59 +15431,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find7 loop $while-continue|08 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $5 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find7 - local.get $5 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|08 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15529,7 +15500,7 @@ br $for-loop|1 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -15552,17 +15523,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $7 i32.const 0 i32.store - local.get $3 + local.get $12 i32.load offset=8 - local.set $11 - local.get $3 + local.set $8 + local.get $12 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $0 + local.tee $6 + local.set $3 + local.get $7 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -15571,10 +15542,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $0 i64.const 0 i64.store - local.get $4 + local.get $0 i32.const 16 i32.const 20 call $~lib/rt/itcms/__new @@ -15585,9 +15556,6 @@ i32.store local.get $4 i32.const 0 - call $~lib/rt/itcms/__link - local.get $4 - i32.const 0 i32.store offset=4 local.get $4 i32.const 0 @@ -15595,7 +15563,7 @@ local.get $4 i32.const 0 i32.store offset=12 - local.get $5 + local.get $3 i32.const 268435455 i32.gt_u if @@ -15607,55 +15575,58 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.const 8 - local.get $5 + local.get $3 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $9 + local.tee $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $6 - local.get $9 + local.get $5 + local.get $0 call $~lib/memory/memory.fill local.get $4 - local.get $6 + local.get $5 i32.store + local.get $5 + if + local.get $4 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $4 - local.get $6 - call $~lib/rt/itcms/__link - local.get $4 - local.get $6 + local.get $5 i32.store offset=4 local.get $4 - local.get $9 + local.get $0 i32.store offset=8 local.get $4 - local.get $5 + local.get $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $7 local.get $4 i32.store loop $for-loop|01 - local.get $8 - local.get $12 - i32.lt_s + local.get $6 + local.get $10 + i32.gt_s if - local.get $8 + local.get $10 i32.const 3 i32.shl - local.get $11 + local.get $8 i32.add - local.tee $5 + local.tee $3 i32.load offset=4 i32.const 1 i32.and @@ -15666,7 +15637,7 @@ i32.const 1 i32.add local.set $1 - local.get $5 + local.get $3 f32.load local.set $2 local.get $4 @@ -15689,12 +15660,12 @@ local.get $0 i32.const 1 i32.add - local.tee $5 + local.tee $3 i32.const 2 i32.const 1 call $~lib/array/ensureCapacity local.get $4 - local.get $5 + local.get $3 i32.store offset=12 end local.get $4 @@ -15706,10 +15677,10 @@ local.get $2 f32.store end - local.get $8 + local.get $10 i32.const 1 i32.add - local.set $8 + local.set $10 br $for-loop|01 end end @@ -15734,11 +15705,11 @@ loop $for-loop|2 local.get $4 i32.load offset=12 - local.get $7 + local.get $11 i32.gt_s if local.get $4 - local.get $7 + local.get $11 call $~lib/array/Array#__get local.tee $2 i32.reinterpret_f32 @@ -15751,64 +15722,64 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.set $0 - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find10 loop $while-continue|011 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $6 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find10 - local.get $6 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|011 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15820,19 +15791,19 @@ end local.get $1 local.get $4 - local.get $7 + local.get $11 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $11 i32.const 1 i32.add - local.set $7 + local.set $11 br $for-loop|2 end end local.get $1 i32.load offset=20 - local.get $3 + local.get $12 i32.load offset=20 i32.ne if @@ -15850,9 +15821,9 @@ f32.const 50 f32.lt if - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15865,59 +15836,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find13 loop $while-continue|014 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find13 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|014 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -15927,12 +15898,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#delete - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -15945,59 +15916,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find16 loop $while-continue|017 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find16 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|017 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -16013,7 +15984,7 @@ br $for-loop|3 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 50 i32.ne @@ -16032,9 +16003,9 @@ f32.const 50 f32.lt if - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16047,59 +16018,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find19 loop $while-continue|020 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find19 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|020 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -16108,12 +16079,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#add - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16126,59 +16097,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find22 loop $while-continue|023 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find22 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|023 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 i32.eqz if i32.const 0 @@ -16188,12 +16159,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 local.get $2 call $~lib/set/Set#delete - local.get $3 + local.get $12 i32.load - local.get $3 + local.get $12 i32.load offset=4 local.get $2 i32.reinterpret_f32 @@ -16206,59 +16177,59 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $3 block $__inlined_func$~lib/set/Set#find25 loop $while-continue|026 - local.get $0 + local.get $3 if - local.get $0 + local.get $3 i32.load offset=4 - local.tee $4 + local.tee $0 i32.const 1 i32.and if (result i32) i32.const 0 else local.get $2 - local.get $0 + local.get $3 f32.load f32.eq end br_if $__inlined_func$~lib/set/Set#find25 - local.get $4 + local.get $0 i32.const -2 i32.and - local.set $0 + local.set $3 br $while-continue|026 end end i32.const 0 - local.set $0 + local.set $3 end - local.get $0 + local.get $3 if i32.const 0 i32.const 1568 @@ -16274,7 +16245,7 @@ br $for-loop|4 end end - local.get $3 + local.get $12 i32.load offset=20 i32.const 50 i32.ne @@ -16286,9 +16257,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $12 call $~lib/set/Set#clear - local.get $3 + local.get $12 i32.load offset=20 if i32.const 0 @@ -16314,62 +16285,63 @@ (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $2 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $2 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $3 @@ -16384,6 +16356,7 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find + drop local.get $3 i32.const -2 i32.and @@ -16392,21 +16365,19 @@ end end i32.const 0 - local.set $0 end - local.get $0 i32.const 0 i32.ne ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 f64) + (local $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $8 f64) + (local $9 i64) (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16435,7 +16406,7 @@ i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $8 + local.tee $5 i32.store global.get $~lib/memory/__stack_pointer local.get $2 @@ -16443,7 +16414,7 @@ i32.shl i32.const 3 i32.div_s - local.tee $7 + local.tee $6 i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor @@ -16451,36 +16422,35 @@ i32.store offset=4 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $4 local.get $0 i32.load offset=16 i32.const 4 i32.shl i32.add - local.set $6 + local.set $7 local.get $3 local.set $2 loop $while-continue|0 - local.get $6 - local.get $9 + local.get $4 + local.get $7 i32.ne if - local.get $9 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $9 + local.get $4 f64.load - local.tee $5 + local.tee $8 f64.store local.get $2 - local.get $1 - local.get $5 + local.get $8 i64.reinterpret_f64 - local.tee $4 + local.tee $9 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16490,7 +16460,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $4 + local.get $9 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16502,28 +16472,29 @@ i32.const 668265263 i32.mul local.tee $10 - local.get $10 i32.const 15 i32.shr_u + local.get $10 i32.xor i32.const -2048144777 i32.mul local.tee $10 - local.get $10 i32.const 13 i32.shr_u + local.get $10 i32.xor i32.const -1028477379 i32.mul local.tee $10 - local.get $10 i32.const 16 i32.shr_u + local.get $10 i32.xor + local.get $1 i32.and i32.const 2 i32.shl - local.get $8 + local.get $5 i32.add local.tee $10 i32.load @@ -16536,30 +16507,36 @@ i32.add local.set $2 end - local.get $9 + local.get $4 i32.const 16 i32.add - local.set $9 + local.set $4 br $while-continue|0 end end local.get $0 - local.get $8 + local.get $5 i32.store - local.get $0 - local.get $8 - call $~lib/rt/itcms/__link + local.get $5 + if + local.get $0 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 local.get $1 i32.store offset=4 local.get $0 local.get $3 i32.store offset=8 - local.get $0 local.get $3 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $7 + local.get $6 i32.store offset=12 local.get $0 local.get $0 @@ -16572,69 +16549,70 @@ ) (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (local $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) - local.get $0 - i32.load - local.get $1 - i64.reinterpret_f64 - local.tee $4 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + local.tee $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $5 i32.const 1 i32.and if (result i32) @@ -16646,7 +16624,8 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $5 i32.const -2 i32.and local.set $2 @@ -16654,9 +16633,7 @@ end end i32.const 0 - local.set $2 end - local.get $2 i32.eqz if local.get $0 @@ -16690,18 +16667,18 @@ end local.get $0 i32.load offset=8 - local.set $3 + local.set $2 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $2 + local.get $5 i32.const 4 i32.shl - local.get $3 + local.get $2 i32.add local.tee $2 local.get $1 @@ -16717,7 +16694,7 @@ i32.load local.get $0 i32.load offset=4 - local.get $5 + local.get $4 i32.and i32.const 2 i32.shl @@ -16753,67 +16730,68 @@ ) (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) (local $2 i32) - (local $3 i32) - (local $4 i64) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i64.reinterpret_f64 - local.tee $4 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $4 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $2 - local.get $2 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $2 - local.get $2 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $2 - local.get $2 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $2 - block $__inlined_func$~lib/set/Set#find + (local $3 i64) + (local $4 i32) + block $__inlined_func$~lib/set/Set#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $3 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $2 + i32.const 15 + i32.shr_u + local.get $2 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $2 + i32.const 13 + i32.shr_u + local.get $2 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $2 + i32.const 16 + i32.shr_u + local.get $2 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 loop $while-continue|0 local.get $2 if + local.get $2 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -16825,7 +16803,8 @@ f64.eq end br_if $__inlined_func$~lib/set/Set#find - local.get $3 + drop + local.get $4 i32.const -2 i32.and local.set $2 @@ -16833,9 +16812,8 @@ end end i32.const 0 - local.set $2 end - local.get $2 + local.tee $2 i32.eqz if return @@ -16856,14 +16834,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $4 + local.get $4 i32.const 4 i32.lt_u select @@ -16883,7 +16861,7 @@ end if local.get $0 - local.get $3 + local.get $2 call $~lib/set/Set#rehash end ) @@ -16911,22 +16889,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 call $~lib/set/Set#constructor - local.tee $4 + local.tee $12 i32.store loop $for-loop|0 local.get $3 f64.const 100 f64.lt if - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has if @@ -16937,10 +16915,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#add - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -16959,7 +16937,7 @@ br $for-loop|0 end end - local.get $4 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -16978,7 +16956,7 @@ f64.const 100 f64.lt if - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -16990,10 +16968,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#add - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -17012,7 +16990,7 @@ br $for-loop|1 end end - local.get $4 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -17025,8 +17003,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17035,18 +17013,17 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 i32.const 0 i32.store - local.get $4 + local.get $12 i32.load offset=8 - local.set $11 - local.get $4 + local.set $8 + local.get $12 i32.load offset=16 - local.tee $12 - local.set $5 - local.get $1 - local.tee $0 + local.tee $7 + local.set $2 + local.get $6 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -17055,31 +17032,28 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 16 i32.const 22 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.store - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $1 + local.get $5 i32.const 0 i32.store offset=4 - local.get $1 + local.get $5 i32.const 0 i32.store offset=8 - local.get $1 + local.get $5 i32.const 0 i32.store offset=12 - local.get $5 + local.get $2 i32.const 134217727 i32.gt_u if @@ -17091,69 +17065,72 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.const 8 - local.get $5 + local.get $2 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $9 + local.tee $0 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $6 - local.get $9 + local.get $4 + local.get $0 call $~lib/memory/memory.fill - local.get $1 - local.get $6 + local.get $5 + local.get $4 i32.store - local.get $1 - local.get $6 - call $~lib/rt/itcms/__link - local.get $1 - local.get $6 + local.get $4 + if + local.get $5 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 + local.get $4 i32.store offset=4 - local.get $1 - local.get $9 + local.get $5 + local.get $0 i32.store offset=8 - local.get $1 local.get $5 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 + local.get $6 + local.get $5 i32.store loop $for-loop|01 - local.get $8 - local.get $12 - i32.lt_s + local.get $7 + local.get $10 + i32.gt_s if - local.get $8 + local.get $10 i32.const 4 i32.shl - local.get $11 + local.get $8 i32.add - local.tee $5 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $2 + local.get $1 local.tee $0 i32.const 1 i32.add - local.set $2 - local.get $5 + local.set $1 + local.get $2 f64.load local.set $3 - local.get $1 + local.get $5 i32.load offset=12 local.get $0 i32.le_u @@ -17169,19 +17146,19 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 local.get $0 i32.const 1 i32.add - local.tee $5 + local.tee $2 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $1 local.get $5 + local.get $2 i32.store offset=12 end - local.get $1 + local.get $5 i32.load offset=4 local.get $0 i32.const 3 @@ -17190,40 +17167,40 @@ local.get $3 f64.store end - local.get $8 + local.get $10 i32.const 1 i32.add - local.set $8 + local.set $10 br $for-loop|01 end end + local.get $5 local.get $1 - local.get $2 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity + local.get $5 local.get $1 - local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer call $~lib/set/Set#constructor local.tee $0 i32.store offset=8 loop $for-loop|2 - local.get $1 + local.get $5 i32.load offset=12 - local.get $7 + local.get $11 i32.gt_s if - local.get $4 - local.get $1 - local.get $7 + local.get $12 + local.get $5 + local.get $11 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -17236,20 +17213,20 @@ unreachable end local.get $0 - local.get $1 - local.get $7 + local.get $5 + local.get $11 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $7 + local.get $11 i32.const 1 i32.add - local.set $7 + local.set $11 br $for-loop|2 end end local.get $0 i32.load offset=20 - local.get $4 + local.get $12 i32.load offset=20 i32.ne if @@ -17267,7 +17244,7 @@ f64.const 50 f64.lt if - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -17279,10 +17256,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#delete - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has if @@ -17300,7 +17277,7 @@ br $for-loop|3 end end - local.get $4 + local.get $12 i32.load offset=20 i32.const 50 i32.ne @@ -17319,7 +17296,7 @@ f64.const 50 f64.lt if - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has if @@ -17330,10 +17307,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#add - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has i32.eqz @@ -17345,10 +17322,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#delete - local.get $4 + local.get $12 local.get $3 call $~lib/set/Set#has if @@ -17366,7 +17343,7 @@ br $for-loop|4 end end - local.get $4 + local.get $12 i32.load offset=20 i32.const 50 i32.ne @@ -17378,9 +17355,9 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $12 call $~lib/set/Set#clear - local.get $4 + local.get $12 i32.load offset=20 if i32.const 0 @@ -17404,6 +17381,7 @@ unreachable ) (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) block $folding-inner1 block $folding-inner0 block $invalid @@ -17425,7 +17403,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -17433,15 +17411,27 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=8 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start memory.size @@ -17599,9 +17589,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17610,9 +17603,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17661,9 +17657,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17672,9 +17671,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17723,9 +17725,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17734,9 +17739,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17785,9 +17793,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17796,9 +17807,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17847,9 +17861,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17858,9 +17875,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17909,9 +17929,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17920,9 +17943,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -17971,9 +17997,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -17982,9 +18011,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -18033,9 +18065,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -18044,9 +18079,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -18095,9 +18133,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -18106,9 +18147,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -18157,9 +18201,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 3 i32.store offset=4 @@ -18168,9 +18215,12 @@ call $~lib/arraybuffer/ArrayBuffer#constructor local.tee $1 i32.store offset=8 - local.get $0 local.get $1 - call $~lib/rt/itcms/__link + if + local.get $0 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 i32.const 4 i32.store offset=12 @@ -18186,4 +18236,72 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 6b6ce45d59..c973a59401 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -85,19 +85,19 @@ (local $0 i32) (local $1 i32) i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1472 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1584 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1632 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -164,7 +164,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -187,7 +187,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -197,15 +197,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -270,30 +270,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -330,11 +306,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -346,28 +321,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -379,19 +351,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -416,9 +388,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -426,17 +398,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -564,7 +536,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -575,7 +547,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -595,44 +567,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -642,7 +613,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -652,20 +623,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -693,7 +664,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -720,15 +691,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -740,15 +708,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -769,6 +737,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -778,7 +749,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -815,8 +786,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -975,7 +946,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1100,7 +1075,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1110,7 +1085,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1123,14 +1098,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1155,56 +1129,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1352,14 +1323,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1369,17 +1340,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1395,22 +1366,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1421,11 +1392,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1471,17 +1442,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1627,19 +1598,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1654,7 +1625,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1665,10 +1636,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1676,10 +1647,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1690,7 +1661,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1720,17 +1691,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -1745,7 +1716,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -1756,10 +1727,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1767,10 +1738,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -1781,7 +1752,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1807,17 +1778,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1832,7 +1803,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -1843,10 +1814,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -1854,10 +1825,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -1868,7 +1839,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -1905,131 +1876,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2046,59 +1995,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2115,7 +2058,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2126,11 +2069,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2144,17 +2087,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2196,9 +2139,9 @@ end local.get $6 i32.load offset=12 - local.set $7 + local.set $3 local.get $1 - local.tee $3 + local.tee $2 i32.const 1073741804 i32.ge_u if @@ -2254,18 +2197,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $3 - i32.const 16 - i32.add - local.set $1 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $5 - local.get $1 + local.tee $7 + local.get $2 + i32.const 16 + i32.add + local.tee $4 i32.const 1073741820 i32.gt_u if @@ -2276,54 +2218,50 @@ call $~lib/builtins/abort unreachable end - local.get $1 + i32.const 12 + local.get $4 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $4 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $1 - call $~lib/rt/tlsf/searchBlock + select local.tee $4 + call $~lib/rt/tlsf/searchBlock + local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $1 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $1 - i32.add - else - local.get $1 - end + local.tee $1 i32.const 4 - local.get $5 + local.get $7 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $4 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $4 + i32.add + local.get $4 + local.get $4 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -2331,16 +2269,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $4 - local.get $2 - local.get $4 + local.tee $5 + local.get $1 + local.get $5 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $5 memory.grow i32.const 0 i32.lt_s @@ -2348,18 +2286,18 @@ unreachable end end - local.get $5 - local.get $2 + local.get $7 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 - local.get $1 + local.get $7 + local.get $4 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -2370,11 +2308,11 @@ unreachable end end - local.get $4 + local.get $1 i32.load i32.const -4 i32.and - local.get $1 + local.get $4 i32.lt_u if i32.const 0 @@ -2384,16 +2322,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 - local.get $4 + local.get $7 + local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 - local.set $2 - local.get $4 - local.tee $1 i32.load - local.set $4 - local.get $2 + local.set $8 + local.get $4 i32.const 4 i32.add i32.const 15 @@ -2406,40 +2341,40 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $8 i32.const -4 i32.and - local.get $2 + local.get $4 i32.sub - local.tee $8 + local.tee $5 i32.const 16 i32.ge_u if local.get $1 - local.get $4 + local.get $8 i32.const 2 i32.and - local.get $2 + local.get $4 i32.or i32.store - local.get $2 + local.get $4 local.get $1 i32.const 4 i32.add i32.add local.tee $4 - local.get $8 + local.get $5 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 + local.get $7 local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $4 + local.get $8 i32.const -2 i32.and i32.store @@ -2459,18 +2394,18 @@ i32.store end local.get $1 - local.get $7 + local.get $3 i32.store offset=12 local.get $1 - local.get $3 + local.get $2 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $2 + local.tee $3 i32.load offset=8 local.set $4 local.get $1 + local.get $3 global.get $~lib/rt/itcms/white - local.get $2 i32.or i32.store offset=4 local.get $1 @@ -2484,7 +2419,7 @@ local.get $1 i32.or i32.store offset=4 - local.get $2 + local.get $3 local.get $1 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -2500,21 +2435,21 @@ i32.const 20 i32.add local.tee $4 - local.get $3 + local.get $2 call $~lib/memory/memory.fill - local.get $3 + local.get $2 local.get $6 i32.load offset=16 local.tee $1 local.get $1 - local.get $3 + local.get $2 i32.gt_u select local.set $5 block $~lib/util/memory/memmove|inlined.0 + local.get $0 local.get $4 local.tee $1 - local.get $0 i32.eq br_if $~lib/util/memory/memmove|inlined.0 local.get $0 @@ -2560,17 +2495,17 @@ i32.sub local.set $5 local.get $1 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 br $while-continue|0 @@ -2605,17 +2540,17 @@ local.get $5 if local.get $1 - local.tee $3 + local.tee $2 i32.const 1 i32.add local.set $1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $3 local.get $2 + local.get $3 i32.load8_u i32.store8 local.get $5 @@ -2708,14 +2643,12 @@ local.tee $3 local.get $1 i32.shr_u - i32.const 1 - i32.lt_u + i32.eqz if i32.const 1073741820 local.get $1 i32.shr_u - i32.const 1 - i32.lt_u + i32.eqz if i32.const 1584 i32.const 1536 @@ -2746,26 +2679,25 @@ local.get $4 i32.lt_u select - local.tee $4 - call $~lib/rt/itcms/__renew local.tee $1 + call $~lib/rt/itcms/__renew + local.tee $4 i32.add - local.get $4 + local.get $1 local.get $3 i32.sub call $~lib/memory/memory.fill - local.get $1 local.get $2 + local.get $4 i32.ne if local.get $0 - local.get $1 + local.get $4 i32.store local.get $0 - local.get $1 + local.get $4 i32.store offset=4 - local.get $1 - local.tee $2 + local.get $4 if local.get $0 i32.eqz @@ -2778,7 +2710,7 @@ unreachable end global.get $~lib/rt/itcms/white - local.get $2 + local.get $4 i32.const 20 i32.sub local.tee $2 @@ -2804,11 +2736,10 @@ global.get $~lib/rt/itcms/state i32.const 1 i32.eq - i32.const 0 local.get $3 i32.const 3 i32.eq - select + i32.and if local.get $2 call $~lib/rt/itcms/Object#makeGray @@ -2818,7 +2749,7 @@ end end local.get $0 - local.get $4 + local.get $1 i32.store offset=8 end ) @@ -2906,7 +2837,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2914,7 +2845,11 @@ end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start call $start:std/static-array @@ -3289,4 +3224,23 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index c065279b3b..d28683e09a 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -7,10 +7,10 @@ (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -210,29 +210,29 @@ (local $0 i32) (local $1 i32) i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $std/staticarray/arr3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/staticarray/arr4 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1680 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2176 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -299,7 +299,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -322,7 +322,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -332,15 +332,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -405,30 +405,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -465,11 +441,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -481,28 +456,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -514,19 +486,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -551,9 +523,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -561,17 +533,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -699,7 +671,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -710,7 +682,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -730,44 +702,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -777,7 +748,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -787,20 +758,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -828,7 +799,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -855,15 +826,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -875,15 +843,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -904,6 +872,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -913,7 +884,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -950,8 +921,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1066,18 +1037,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1160,7 +1131,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1295,56 +1270,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1422,19 +1394,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1445,54 +1410,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1500,16 +1461,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1517,16 +1478,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1543,7 +1504,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -1553,13 +1514,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1572,40 +1533,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -1625,8 +1586,6 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -1698,14 +1657,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1715,17 +1674,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1741,22 +1700,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1767,11 +1726,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1852,23 +1811,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -1880,8 +1843,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1928,17 +1891,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2084,19 +2047,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2111,7 +2074,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2122,10 +2085,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2133,10 +2096,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2147,7 +2110,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2177,17 +2140,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2202,7 +2165,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2213,10 +2176,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2224,10 +2187,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2238,7 +2201,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2264,17 +2227,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2289,7 +2252,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2300,10 +2263,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2311,10 +2274,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2325,7 +2288,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2362,131 +2325,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2503,59 +2444,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2572,7 +2507,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2583,11 +2518,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2601,17 +2536,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2816,66 +2751,6 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1408 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=12 @@ -2923,7 +2798,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2937,32 +2812,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2979,29 +2853,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3016,25 +2890,25 @@ (func $~lib/staticarray/StaticArray<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - 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 3868 - i32.lt_s - if - i32.const 20272 - i32.const 20320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf (result i32) + 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 3868 + i32.lt_s + if + i32.const 20272 + i32.const 20320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 local.get $0 i32.const 20 @@ -3053,7 +2927,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf end local.get $2 @@ -3093,6 +2966,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf end local.get $2 @@ -3107,9 +2981,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 end - local.get $2 i32.const 0 i32.ge_s ) @@ -3120,38 +2992,37 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.tee $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3868 - i32.lt_s - if - i32.const 20272 - i32.const 20320 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray + block $__inlined_func$~lib/util/string/joinStringArray (result i32) local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + if + i32.const 20272 + i32.const 20320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i32.const 0 + i32.store offset=8 + local.get $5 i32.const 1 i32.sub local.tee $6 @@ -3163,7 +3034,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 2768 - local.set $0 br $__inlined_func$~lib/util/string/joinStringArray end local.get $6 @@ -3171,31 +3041,30 @@ if global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $4 + local.get $0 i32.load local.tee $0 i32.store - local.get $0 - i32.const 2768 - local.get $0 - select - local.set $0 local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2768 + local.get $0 + select br $__inlined_func$~lib/util/string/joinStringArray end loop $for-loop|0 - local.get $0 + local.get $4 local.get $5 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load local.tee $7 @@ -3208,18 +3077,19 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 end - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer + local.get $2 local.get $6 local.get $1 i32.const 20 @@ -3227,76 +3097,75 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $7 + local.tee $2 i32.mul - local.get $3 i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $5 i32.store offset=8 i32.const 0 - local.set $5 + local.set $4 loop $for-loop|1 - local.get $5 + local.get $4 local.get $6 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load - local.tee $3 + local.tee $7 i32.store offset=4 - local.get $3 + local.get $7 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add - local.get $3 - local.get $3 + local.get $7 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $7 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $2 local.get $3 + local.get $7 i32.add - local.set $2 + local.set $3 end - local.get $7 + local.get $2 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add local.get $1 - local.get $7 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $2 - local.get $7 + local.get $3 i32.add - local.set $2 + local.set $3 end - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $for-loop|1 end end @@ -3304,20 +3173,20 @@ local.get $6 i32.const 2 i32.shl - local.get $4 + local.get $0 i32.add i32.load - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 if - local.get $2 + local.get $3 i32.const 1 i32.shl - local.get $0 + local.get $5 i32.add - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -3331,8 +3200,8 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $5 end - local.get $0 ) (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -3390,13 +3259,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -3618,22 +3487,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -3752,18 +3621,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -3775,7 +3644,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -3787,7 +3656,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -3812,8 +3681,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -3827,11 +3696,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -3839,87 +3707,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -3934,16 +3801,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -3952,7 +3827,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -3963,50 +3838,58 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -4014,23 +3897,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -4040,11 +3923,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -4054,33 +3937,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -4088,27 +3969,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -4116,15 +3997,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -4135,7 +4016,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -4147,13 +4028,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -4164,9 +4045,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -4183,18 +4064,18 @@ i32.load offset=16 local.get $0 i32.add - local.set $1 + local.set $2 loop $while-continue|0 local.get $0 - local.get $1 + local.get $2 i32.lt_u if local.get $0 i32.load - local.tee $2 + local.tee $1 if - local.get $2 - call $~lib/rt/itcms/__visit + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end local.get $0 i32.const 4 @@ -4208,36 +4089,23 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $folding-inner0 - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/array/Array<~lib/string/String> - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/staticarray/StaticArray - block $std/staticarray/Ref - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/staticarray/StaticArray + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - call $~lib/rt/itcms/__visit + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $folding-inner1 $folding-inner1 $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid end return end @@ -4245,67 +4113,68 @@ end return end - local.get $0 - call $~lib/staticarray/StaticArray~visit return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit + call $~lib/staticarray/StaticArray~visit return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit + call $~lib/staticarray/StaticArray~visit return end local.get $0 - call $~lib/staticarray/StaticArray~visit - return - end - local.get $0 - local.tee $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.load - local.tee $0 + i32.lt_u if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 end + br $folding-inner1 end - local.get $1 - i32.load - call $~lib/rt/itcms/__visit return end return end - return + unreachable end - unreachable + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end ) (func $~start call $start:std/staticarray @@ -4318,16 +4187,17 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f64) - (local $8 f32) + (local $7 i32) + (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - (local $12 i32) + (local $11 f64) + (local $12 f32) (local $13 i32) (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub @@ -4338,19 +4208,19 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i64.const 0 i64.store offset=8 - local.get $1 + local.get $2 i64.const 0 i64.store offset=16 - local.get $1 + local.get $2 i64.const 0 i64.store offset=24 - local.get $1 + local.get $2 i32.const 1056 i32.store i32.const 1056 @@ -4507,17 +4377,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $2 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4532,9 +4402,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4549,9 +4419,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4566,9 +4436,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4586,16 +4456,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4611,17 +4481,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $2 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4638,33 +4508,39 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 + local.get $3 call $std/staticarray/Ref#constructor - local.tee $3 + local.tee $2 i32.store - local.get $1 + local.get $2 + if + local.get $3 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 call $std/staticarray/Ref#constructor - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $1 + local.get $2 + if + local.get $3 + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $1 global.set $std/staticarray/arr4 i32.const 0 global.set $std/staticarray/arr3 i32.const 0 global.set $std/staticarray/arr4 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -4673,25 +4549,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 12 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4708,17 +4584,17 @@ unreachable end loop $for-loop|0 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $0 + local.get $1 i32.gt_s if + local.get $2 local.get $1 - local.get $0 call $~lib/staticarray/StaticArray#__get if i32.const 0 @@ -4728,10 +4604,10 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end @@ -4740,16 +4616,16 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 call $~lib/staticarray/StaticArray.fromArray - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $1 + local.get $2 i32.load offset=12 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4765,16 +4641,16 @@ unreachable end loop $for-loop|1 - local.get $1 - i32.load offset=12 local.get $2 + i32.load offset=12 + local.get $0 i32.gt_s if + local.get $1 local.get $0 - local.get $2 call $~lib/staticarray/StaticArray#__get - local.get $1 local.get $2 + local.get $0 call $~lib/array/Array#__get i32.ne if @@ -4785,10 +4661,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|1 end end @@ -4797,15 +4673,15 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store - local.get $1 + local.get $0 call $~lib/staticarray/StaticArray.fromArray - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4823,11 +4699,11 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -4840,7 +4716,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray.concat local.tee $0 @@ -4872,7 +4748,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray.concat local.tee $0 @@ -4883,7 +4759,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -4902,26 +4778,26 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.const 2128 i32.const 20 call $~lib/memory/memory.copy - local.get $1 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -4937,33 +4813,33 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|2 - local.get $1 + local.get $4 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $0 + local.get $1 i32.gt_s if + local.get $4 local.get $1 - local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store local.get $2 - local.get $0 + i32.store + local.get $3 + local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=12 - local.get $3 - local.get $4 + local.get $2 + local.get $0 call $~lib/string/String.__eq i32.eqz if @@ -4974,21 +4850,21 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5004,18 +4880,18 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 + local.tee $0 + local.get $1 i32.store - local.get $3 + local.get $0 i32.const 1984 i32.store offset=12 - local.get $2 + local.get $1 i32.const 1984 call $~lib/string/String.__eq i32.eqz @@ -5027,18 +4903,18 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $2 + local.get $0 i32.const 2016 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -5051,13 +4927,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> local.tee $0 i32.store offset=4 - local.get $1 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -5081,7 +4957,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5093,7 +4969,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -5109,7 +4985,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 100 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5130,7 +5006,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const -1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5155,15 +5031,15 @@ local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + local.tee $0 + local.get $1 i32.store - local.get $2 + local.get $0 i32.const 2080 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2080 call $~lib/string/String.__eq i32.eqz @@ -5176,7 +5052,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5197,13 +5073,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5219,7 +5095,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $1 @@ -5246,11 +5122,11 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2304 i32.const 20 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 @@ -5261,14 +5137,14 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $0 i32.store offset=16 local.get $0 i32.load offset=12 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5292,14 +5168,14 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=12 - local.get $1 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $0 i32.store offset=16 local.get $0 i32.load offset=12 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5320,16 +5196,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2448 i32.const 20 call $~lib/memory/memory.copy - local.get $1 + local.get $0 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $1 + local.get $0 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5346,7 +5222,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5361,7 +5237,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5376,7 +5252,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5393,54 +5269,52 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2496 i32.const 8 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.get $1 + local.set $0 + i32.const 0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 3 i32.shr_u - local.tee $2 - i32.const 0 - local.get $2 - select + local.tee $1 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 - local.get $2 - local.get $16 - i32.gt_s + local.get $0 + local.get $1 + i32.lt_s if i32.const 1 - i32.const 1 - local.get $16 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.tee $7 - local.get $7 - f64.ne - local.get $7 + local.tee $11 f64.const nan:0x8000000000000 f64.eq - select + local.get $11 + local.get $11 + f64.ne + i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 + local.set $0 br $while-continue|0 end end @@ -5458,57 +5332,53 @@ i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2528 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.set $16 + local.set $0 i32.const 0 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 - i32.const 0 - local.get $2 - select + local.tee $1 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - loop $while-continue|07 - local.get $2 - local.get $16 - i32.gt_s + loop $while-continue|025 + local.get $0 + local.get $1 + i32.lt_s if i32.const 1 - i32.const 1 - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.tee $8 - local.get $8 - f32.ne - local.get $8 + local.tee $12 f32.const nan:0x400000 f32.eq - select + local.get $12 + local.get $12 + f32.ne + i32.or br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 - br $while-continue|07 + local.set $0 + br $while-continue|025 end end i32.const 0 @@ -5526,40 +5396,36 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.const 2560 i32.const 12 call $~lib/memory/memory.copy - local.get $0 + local.get $3 i32.store offset=16 i32.const 0 + local.set $0 + i32.const -1 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.tee $2 - i32.const 0 - local.get $2 - select i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf - end - loop $while-continue|013 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf + loop $while-continue|027 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 @@ -5568,8 +5434,8 @@ local.get $1 i32.const 1 i32.add - local.set $1 - br $while-continue|013 + local.set $0 + br $while-continue|027 end end i32.const -1 @@ -5585,43 +5451,39 @@ unreachable end i32.const 0 + local.set $0 + i32.const -1 local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf28 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.tee $2 - i32.const 0 - local.get $2 - select i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - end - loop $while-continue|015 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf28 + loop $while-continue|030 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf14 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf28 local.get $1 i32.const 1 i32.add - local.set $1 - br $while-continue|015 + local.set $0 + br $while-continue|030 end end i32.const -1 @@ -5639,9 +5501,11 @@ unreachable end i32.const 2 + local.set $0 + i32.const -1 local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - local.get $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf31 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -5653,30 +5517,27 @@ i32.const 1 local.get $2 select - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - end - loop $while-continue|017 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf31 + loop $while-continue|033 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 9 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf31 local.get $1 i32.const 1 i32.add - local.set $1 - br $while-continue|017 + local.set $0 + br $while-continue|033 end end i32.const -1 @@ -5693,59 +5554,53 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf34 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 - i32.const -1 - i32.le_s - i32.const 1 - local.get $2 - select - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - end - local.get $2 + local.tee $1 + i32.eqz + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf34 + local.get $1 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - loop $while-continue|019 + local.set $0 + loop $while-continue|036 + local.get $0 local.get $1 - local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf34 + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|019 + local.set $0 + br $while-continue|036 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -5757,56 +5612,56 @@ unreachable end i32.const -1 - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $0 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf37 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.const -3 i32.le_s i32.const 1 - local.get $2 + local.get $1 select - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf37 + local.get $1 i32.const 3 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 - loop $while-continue|021 + local.set $0 + loop $while-continue|039 + local.get $0 local.get $1 - local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $3 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf37 + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|021 + local.set $0 + br $while-continue|039 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -5819,70 +5674,74 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2592 i32.const 16 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $16 - local.set $0 + local.set $3 i32.const -1 - local.set $2 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $16 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf local.get $0 - local.get $16 + local.get $3 i32.add - local.get $16 + local.get $0 i32.const 1 i32.sub + local.get $3 local.get $0 - local.get $0 - local.get $16 - i32.ge_s + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - loop $while-continue|00 - local.get $0 + local.set $1 + loop $while-continue|012 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $2 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $2 + local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|00 + local.set $1 + br $while-continue|012 end end i32.const -1 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 i32.const 3 i32.ne if @@ -5895,68 +5754,61 @@ end i32.const 1 global.set $~argumentsLength - local.get $1 - local.tee $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $1 + local.tee $3 + local.set $0 i32.const -1 - local.set $2 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $16 + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 + local.get $3 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $1 - local.get $16 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 + local.get $0 + local.get $3 i32.add - local.get $16 + local.get $3 i32.const 1 i32.sub - local.get $1 - local.get $1 - local.get $16 + local.get $0 + local.get $0 + local.get $3 i32.ge_s select - local.get $1 + local.get $0 i32.const 0 i32.lt_s select local.set $1 - loop $while-continue|06 + loop $while-continue|018 local.get $1 i32.const 0 i32.ge_s if local.get $1 - local.tee $2 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf17 + local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|06 + br $while-continue|018 end end i32.const -1 - local.set $2 + local.set $1 end - local.get $2 + local.get $1 i32.const -1 i32.ne if @@ -5967,48 +5819,47 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $0 + i32.const -1 + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - end - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 + local.get $0 i32.const 1 i32.sub i32.const 3 - local.get $1 + local.get $0 i32.const 3 i32.le_u select - local.set $1 - loop $while-continue|023 - local.get $1 + local.set $0 + loop $while-continue|041 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf19 local.get $1 i32.const 1 i32.sub - local.set $1 - br $while-continue|023 + local.set $0 + br $while-continue|041 end end i32.const -1 @@ -6025,8 +5876,10 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -6034,11 +5887,7 @@ i32.shr_u local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - end + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 local.get $1 i32.const 1 i32.sub @@ -6047,32 +5896,32 @@ i32.const 2 i32.le_u select - local.set $1 - loop $while-continue|025 - local.get $1 + local.set $0 + loop $while-continue|044 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf42 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|025 + local.set $0 + br $while-continue|044 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -6081,8 +5930,10 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $0 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -6090,40 +5941,36 @@ i32.shr_u local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - end + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 local.get $1 i32.const 2 i32.sub - local.set $1 - loop $while-continue|027 - local.get $1 + local.set $0 + loop $while-continue|047 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf45 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|027 + local.set $0 + br $while-continue|047 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -6133,46 +5980,46 @@ unreachable end i32.const -1 - local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $0 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $1 i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $2 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 + local.get $1 i32.const 1 i32.sub - local.set $1 - loop $while-continue|029 - local.get $1 + local.set $0 + loop $while-continue|050 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf48 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|029 + local.set $0 + br $while-continue|050 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -6187,16 +6034,16 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2736 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $1 + local.get $2 i32.const 2800 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 @@ -6221,7 +6068,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2768 i32.store offset=20 - local.get $1 + local.get $2 i32.const 2768 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 @@ -6246,7 +6093,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2928 i32.store offset=20 - local.get $1 + local.get $2 i32.const 2928 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 @@ -6271,7 +6118,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3008 i32.store offset=20 - local.get $1 + local.get $2 i32.const 3008 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $0 @@ -6296,12 +6143,12 @@ global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $1 + local.get $2 i32.const 2800 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6312,25 +6159,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 2800 i32.store - local.get $1 + local.get $2 i32.const 2800 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 local.get $0 + i32.store offset=12 local.get $1 + local.get $0 call $~lib/string/String.__eq i32.eqz if @@ -6345,45 +6192,45 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 3104 i32.const 8 call $~lib/memory/memory.copy - local.get $1 + local.get $2 i32.store offset=16 i32.const 1 - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_u select - local.set $16 - loop $for-loop|024 + local.set $0 + loop $for-loop|053 local.get $0 - local.get $16 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.const 1 i32.store - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 - br $for-loop|024 + local.set $0 + br $for-loop|053 end end - local.get $1 + local.get $2 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6394,7 +6241,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6411,68 +6258,68 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.const 3136 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $5 i32.store offset=16 i32.const 0 - local.set $16 - local.get $1 + local.set $0 + local.get $5 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 1 i32.gt_u if - local.get $0 + local.get $1 i32.const 1 i32.shr_u - local.set $2 - local.get $0 + local.set $4 + local.get $1 i32.const 1 i32.sub - local.set $0 - loop $while-continue|026 - local.get $2 - local.get $16 - i32.gt_u + local.set $3 + loop $while-continue|055 + local.get $0 + local.get $4 + i32.lt_u if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $5 i32.add - local.tee $3 + local.tee $1 i32.load - local.set $4 + local.set $2 + local.get $1 local.get $3 local.get $0 - local.get $16 i32.sub i32.const 2 i32.shl - local.get $1 + local.get $5 i32.add - local.tee $3 + local.tee $1 i32.load i32.store - local.get $3 - local.get $4 - i32.store - local.get $16 + local.get $1 + local.get $2 + i32.store + local.get $0 i32.const 1 i32.add - local.set $16 - br $while-continue|026 + local.set $0 + br $while-continue|055 end end end - local.get $1 + local.get $5 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6485,7 +6332,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6498,7 +6345,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $5 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6515,56 +6362,44 @@ i32.const 20 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.const 3168 i32.const 20 call $~lib/memory/memory.copy - local.get $1 + local.get $3 i32.store offset=16 - i32.const 0 - local.get $1 + local.get $3 + i32.const 3 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 - select - local.set $2 - local.get $0 - i32.const 3 - local.get $0 - local.get $0 + local.tee $2 + local.get $2 i32.const 3 i32.gt_u select - local.tee $3 - i32.sub - local.set $16 - local.get $2 + local.tee $0 i32.const 2 i32.shl - local.get $1 - i32.add local.get $3 - i32.const 2 - i32.shl - local.get $1 i32.add - local.get $16 - local.get $0 local.get $2 + local.get $0 i32.sub + local.tee $1 + local.get $2 local.tee $0 local.get $0 - local.get $16 + local.get $1 i32.gt_s select i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $1 + local.get $3 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6577,7 +6412,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6590,7 +6425,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6603,7 +6438,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6616,7 +6451,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 4 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6633,19 +6468,19 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $7 i32.const 3216 i32.const 12 call $~lib/memory/memory.copy - local.get $1 + local.get $7 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $6 i32.const 3248 i32.store offset=12 i32.const 0 - local.set $16 - local.get $2 + local.set $0 + local.get $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6654,65 +6489,65 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 local.get $1 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $3 + local.tee $5 i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $4 i32.store - local.get $0 + local.get $4 i32.load offset=4 - local.set $4 - loop $for-loop|027 - local.get $3 - local.get $16 - i32.gt_s + local.set $3 + loop $for-loop|028 + local.get $0 + local.get $5 + i32.lt_s if - local.get $1 - local.get $16 + local.get $7 + local.get $0 i32.const 2 i32.shl - local.tee $5 + local.tee $2 i32.add i32.load - local.set $6 + local.set $1 i32.const 3 global.set $~argumentsLength - local.get $4 - local.get $5 + local.get $2 + local.get $3 i32.add - local.get $6 - local.get $16 local.get $1 + local.get $0 + local.get $7 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 - br $for-loop|027 + local.set $0 + br $for-loop|028 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 + local.get $6 + local.get $4 i32.store offset=4 - local.get $0 + local.get $4 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -6725,7 +6560,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -6738,7 +6573,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $4 i32.const 2 call $~lib/array/Array#__get i32.const 4 @@ -6755,37 +6590,37 @@ i32.const 3280 i32.store offset=12 i32.const 0 - local.set $16 - local.get $1 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|030 + local.set $2 + loop $for-loop|060 local.get $0 - local.get $16 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $16 - local.get $1 + local.get $0 + local.get $7 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $16 + local.get $0 i32.const 1 i32.add - local.set $16 - br $for-loop|030 + local.set $0 + br $for-loop|060 end end global.get $std/staticarray/maxVal @@ -6800,13 +6635,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $0 + local.tee $17 i32.const 3312 i32.store offset=12 - i32.const 0 - local.set $16 - local.get $0 + local.get $17 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6823,51 +6655,51 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $6 i32.store - local.get $1 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $12 - loop $for-loop|028 - local.get $12 - local.get $16 - i32.gt_s + local.set $13 + loop $for-loop|029 + local.get $9 + local.get $13 + i32.lt_s if - local.get $16 + local.get $9 i32.const 2 i32.shl - local.get $1 + local.get $7 i32.add i32.load - local.set $9 + local.set $5 i32.const 3 global.set $~argumentsLength + local.get $5 local.get $9 - local.get $16 - local.get $1 + local.get $7 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $3 + local.get $6 i32.load offset=12 - local.tee $13 + local.tee $14 i32.const 1 i32.add - local.tee $14 - local.tee $0 - local.get $3 + local.tee $15 + local.tee $2 + local.get $6 i32.load offset=8 - local.tee $5 + local.tee $4 i32.const 2 i32.shr_u i32.gt_u if - local.get $0 + local.get $2 i32.const 268435455 i32.gt_u if @@ -6879,19 +6711,19 @@ unreachable end block $__inlined_func$~lib/rt/itcms/__renew - local.get $5 + local.get $4 i32.const 1 i32.shl - local.tee $4 + local.tee $0 i32.const 1073741820 - local.get $4 + local.get $0 i32.const 1073741820 i32.lt_u select - local.tee $4 - local.get $0 + local.tee $1 + local.get $2 i32.const 8 - local.get $0 + local.get $2 i32.const 8 i32.gt_u select @@ -6899,18 +6731,18 @@ i32.shl local.tee $0 local.get $0 - local.get $4 + local.get $1 i32.lt_u select - local.tee $10 - local.tee $4 - local.get $3 - i32.load - local.tee $15 + local.tee $3 local.tee $2 + local.get $6 + i32.load + local.tee $16 + local.tee $1 i32.const 20 i32.sub - local.tee $6 + local.tee $10 i32.load i32.const -4 i32.and @@ -6918,81 +6750,85 @@ i32.sub i32.le_u if - local.get $6 - local.get $4 - i32.store offset=16 + local.get $10 local.get $2 + i32.store offset=16 + local.get $1 local.set $0 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $4 - local.get $6 + local.get $2 + local.get $10 i32.load offset=12 call $~lib/rt/itcms/__new local.tee $0 + local.get $1 local.get $2 - local.get $4 - local.get $6 + local.get $10 i32.load offset=16 - local.tee $2 + local.tee $1 + local.get $1 local.get $2 - local.get $4 i32.gt_u select call $~lib/memory/memory.copy end local.get $0 - local.get $5 + local.get $4 i32.add - local.get $10 - local.get $5 + local.get $3 + local.get $4 i32.sub call $~lib/memory/memory.fill local.get $0 - local.get $15 + local.get $16 i32.ne if - local.get $3 + local.get $6 local.get $0 i32.store - local.get $3 + local.get $6 local.get $0 i32.store offset=4 - local.get $3 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $6 + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end + local.get $6 local.get $3 - local.get $10 i32.store offset=8 end - local.get $3 + local.get $6 i32.load offset=4 - local.get $13 + local.get $14 i32.const 2 i32.shl i32.add - local.get $9 + local.get $5 i32.store - local.get $3 - local.get $14 + local.get $6 + local.get $15 i32.store offset=12 end - local.get $16 + local.get $9 i32.const 1 i32.add - local.set $16 - br $for-loop|028 + local.set $9 + br $for-loop|029 end end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $17 + local.get $6 i32.store offset=24 - local.get $3 + local.get $6 i32.load offset=12 i32.const 2 i32.ne @@ -7004,7 +6840,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -7017,7 +6853,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.const 1 call $~lib/array/Array#__get i32.const 3 @@ -7034,47 +6870,44 @@ i32.const 3344 i32.store offset=12 i32.const 0 - local.set $16 - i32.const 0 - local.set $2 - local.get $1 - local.tee $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|033 - local.get $1 - local.get $16 - i32.gt_s + local.set $2 + loop $for-loop|064 + local.get $0 + local.get $2 + i32.lt_s if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $2 - local.get $3 - local.get $16 + local.get $8 + local.get $1 local.get $0 + local.get $7 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $16 + local.set $8 + local.get $0 i32.const 1 i32.add - local.set $16 - br $for-loop|033 + local.set $0 + br $for-loop|064 end end - local.get $2 + local.get $8 i32.const 6 i32.ne if @@ -7089,8 +6922,8 @@ i32.const 3376 i32.store offset=12 i32.const 0 - local.set $2 - local.get $0 + local.set $8 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -7098,37 +6931,37 @@ i32.shr_u i32.const 1 i32.sub - local.set $16 - loop $for-loop|035 - local.get $16 + local.set $0 + loop $for-loop|066 + local.get $0 i32.const 0 i32.ge_s if - local.get $16 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load local.set $1 i32.const 4 global.set $~argumentsLength - local.get $2 + local.get $8 local.get $1 - local.get $16 local.get $0 + local.get $7 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $2 - local.get $16 + local.set $8 + local.get $0 i32.const 1 i32.sub - local.set $16 - br $for-loop|035 + local.set $0 + br $for-loop|066 end end - local.get $2 + local.get $8 i32.const 6 i32.ne if @@ -7144,42 +6977,42 @@ i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#some (result i32) i32.const 0 - local.set $2 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $16 - loop $for-loop|038 + local.set $2 + loop $for-loop|068 + local.get $0 local.get $2 - local.get $16 i32.lt_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 - local.get $2 + local.get $1 local.get $0 + local.get $7 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#some drop - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|038 + local.set $0 + br $for-loop|068 end end i32.const 0 @@ -7196,44 +7029,44 @@ global.get $~lib/memory/__stack_pointer i32.const 3440 i32.store offset=12 - block $__inlined_func$~lib/staticarray/StaticArray#some39 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#some69 (result i32) i32.const 0 - local.set $2 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $16 - loop $for-loop|040 + local.set $2 + loop $for-loop|071 + local.get $0 local.get $2 - local.get $16 i32.lt_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $3 - local.get $2 + local.get $1 local.get $0 + local.get $7 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#some39 + br_if $__inlined_func$~lib/staticarray/StaticArray#some69 drop - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|040 + local.set $0 + br $for-loop|071 end end i32.const 0 @@ -7251,43 +7084,43 @@ i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#every (result i32) i32.const 0 - local.set $2 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $16 - loop $for-loop|041 + local.set $2 + loop $for-loop|073 + local.get $0 local.get $2 - local.get $16 i32.lt_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 - local.get $2 + local.get $1 local.get $0 + local.get $7 i32.const 3472 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#every drop - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|041 + local.set $0 + br $for-loop|073 end end i32.const 1 @@ -7304,45 +7137,45 @@ global.get $~lib/memory/__stack_pointer i32.const 3504 i32.store offset=12 - block $__inlined_func$~lib/staticarray/StaticArray#every42 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#every74 (result i32) i32.const 0 - local.set $2 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $16 - loop $for-loop|043 + local.set $2 + loop $for-loop|076 + local.get $0 local.get $2 - local.get $16 i32.lt_s if - local.get $2 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load - local.set $3 + local.set $1 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $3 - local.get $2 + local.get $1 local.get $0 + local.get $7 i32.const 3504 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#every42 + br_if $__inlined_func$~lib/staticarray/StaticArray#every74 drop - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|043 + local.set $0 + br $for-loop|076 end end i32.const 1 @@ -7359,8 +7192,8 @@ i32.const 3536 i32.store offset=12 i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -7368,36 +7201,36 @@ i32.shr_u local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#findIndex - loop $for-loop|044 - local.get $1 + loop $for-loop|078 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 local.get $0 + local.get $7 i32.const 3536 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|044 + local.set $0 + br $for-loop|078 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -7412,45 +7245,45 @@ i32.const 3568 i32.store offset=12 i32.const 0 - local.set $1 - local.get $0 + local.set $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u local.set $2 - block $__inlined_func$~lib/staticarray/StaticArray#findIndex45 - loop $for-loop|046 - local.get $1 + block $__inlined_func$~lib/staticarray/StaticArray#findIndex79 + loop $for-loop|081 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 local.get $0 + local.get $7 i32.const 3568 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex45 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex79 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|046 + local.set $0 + br $for-loop|081 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -7464,7 +7297,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3600 i32.store offset=12 - local.get $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -7472,38 +7305,38 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex - loop $for-loop|047 - local.get $1 + loop $for-loop|083 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $1 local.get $0 + local.get $7 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|047 + local.set $0 + br $for-loop|083 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -7517,7 +7350,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=12 - local.get $0 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -7526,8 +7359,8 @@ i32.const 1 i32.sub local.set $1 - block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 - loop $for-loop|049 + block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex84 + loop $for-loop|086 local.get $1 i32.const 0 i32.ge_s @@ -7535,28 +7368,29 @@ local.get $1 i32.const 2 i32.shl - local.get $0 + local.get $7 i32.add i32.load i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 + local.tee $0 + local.get $7 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex84 + local.get $0 i32.const 1 i32.sub local.set $1 - br $for-loop|049 + br $for-loop|086 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -7580,7 +7414,7 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $16 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7592,16 +7426,16 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of18 - block $0of19 - block $outOfRange10 + block $1of126 + block $0of127 + block $outOfRange28 global.get $~argumentsLength - br_table $0of19 $1of18 $outOfRange10 + br_table $0of127 $1of126 $outOfRange28 end unreachable end i32.const 3712 - local.set $16 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 3712 i32.store @@ -7613,7 +7447,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $16 + local.get $0 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 @@ -7675,12 +7509,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|037 + loop $while-continue|089 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|037 + br $while-continue|089 end end end @@ -7799,10 +7633,13 @@ local.tee $1 local.get $3 i32.store - local.get $1 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 local.get $3 i32.store offset=4 @@ -7883,25 +7720,25 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - i32.const 0 - local.get $1 - select local.tee $3 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $4 - i32.add + i32.const 0 + local.get $1 + select local.tee $2 + i32.add + local.tee $4 i32.const 268435455 i32.gt_u if @@ -7913,25 +7750,25 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 2 i32.shl i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 - local.get $0 local.get $4 + local.get $0 + local.get $3 i32.const 2 i32.shl local.tee $0 call $~lib/memory/memory.copy local.get $0 - local.get $2 + local.get $4 i32.add local.get $1 - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -7939,7 +7776,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/staticarray/StaticArray.slice<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -7968,13 +7805,13 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.set $3 + local.set $4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $4 i32.add local.tee $1 i32.const 0 @@ -7984,9 +7821,9 @@ select else local.get $1 - local.get $3 + local.get $4 local.get $1 - local.get $3 + local.get $4 i32.lt_s select end @@ -7997,7 +7834,7 @@ i32.lt_s if (result i32) local.get $2 - local.get $3 + local.get $4 i32.add local.tee $2 i32.const 0 @@ -8007,9 +7844,9 @@ select else local.get $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select end @@ -8023,41 +7860,42 @@ select i32.const 2 i32.shl - local.tee $3 + local.tee $2 i32.const 8 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store local.get $1 i32.const 2 i32.shl local.get $0 i32.add - local.set $1 - i32.const 0 local.set $0 loop $while-continue|0 - local.get $0 + local.get $2 local.get $3 - i32.lt_u + i32.gt_u if - local.get $0 - local.get $2 + local.get $3 + local.get $4 i32.add local.get $0 - local.get $1 + local.get $3 i32.add i32.load - local.tee $4 + local.tee $1 i32.store - local.get $2 - local.get $4 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 + local.get $1 + if + local.get $4 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 i32.const 4 i32.add - local.set $0 + local.set $3 br $while-continue|0 end end @@ -8065,7 +7903,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -8134,6 +7972,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -8158,7 +7997,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $5 local.get $1 i32.load offset=12 i32.const 0 @@ -8166,7 +8005,7 @@ select local.tee $6 i32.add - local.tee $3 + local.tee $4 i32.const 268435455 i32.gt_u if @@ -8178,79 +8017,83 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $7 i32.store - local.get $3 + local.get $7 i32.load offset=4 - local.set $5 - local.get $2 + local.set $4 + local.get $5 i32.const 2 i32.shl - local.set $2 + local.set $5 loop $for-loop|0 - local.get $2 - local.get $4 - i32.gt_u + local.get $3 + local.get $5 + i32.lt_u if + local.get $3 local.get $4 - local.get $5 i32.add local.get $0 - local.get $4 + local.get $3 i32.add i32.load - local.tee $7 + local.tee $8 i32.store + local.get $8 + if + local.get $7 + local.get $8 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - local.get $7 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $4 i32.const 4 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $2 + local.get $4 local.get $5 i32.add - local.set $4 + local.set $0 local.get $1 i32.load offset=4 local.set $1 local.get $6 i32.const 2 i32.shl - local.set $5 - i32.const 0 - local.set $0 + local.set $3 loop $for-loop|1 - local.get $0 - local.get $5 + local.get $2 + local.get $3 i32.lt_u if local.get $0 - local.get $4 + local.get $2 i32.add - local.get $0 local.get $1 + local.get $2 i32.add i32.load - local.tee $2 + local.tee $4 i32.store - local.get $3 + local.get $4 + if + local.get $7 + local.get $4 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $0 i32.const 4 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end @@ -8258,6 +8101,79 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $7 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end ) ) diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 2dcb63d1cd..38a3381beb 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -3,8 +3,8 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) @@ -486,15 +486,15 @@ (local $0 i32) (local $1 i32) i32.const 1280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 19632 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 20688 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1488 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -533,160 +533,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 37476 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 21056 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1280 - i32.const 1344 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 21060 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -723,11 +569,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -739,28 +584,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -772,19 +614,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -809,9 +651,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -819,17 +661,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -957,7 +799,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -968,7 +810,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -988,44 +830,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1035,7 +876,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1045,20 +886,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1086,7 +927,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1113,15 +954,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1133,15 +971,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1162,6 +1000,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1171,7 +1012,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1208,8 +1049,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1368,7 +1209,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1493,7 +1338,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1503,7 +1348,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1516,14 +1361,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1548,56 +1392,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1698,12 +1539,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1719,14 +1560,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1737,18 +1578,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1759,54 +1599,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1814,16 +1650,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1831,15 +1667,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1867,12 +1703,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1886,7 +1722,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1896,7 +1732,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1914,12 +1750,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1949,8 +1785,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1979,19 +1815,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -2000,18 +1836,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -2020,10 +1856,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -2032,97 +1868,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -2154,7 +1990,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2180,12 +2016,12 @@ local.get $0 i32.const 255 i32.and - local.tee $5 + local.tee $4 i32.const 3 i32.div_u i32.add i32.load8_u - local.get $5 + local.get $4 i32.const 3 i32.rem_u i32.const 2 @@ -2207,43 +2043,43 @@ local.tee $2 i32.const 255 i32.and - local.set $4 + local.set $3 local.get $2 i32.const 8 i32.shr_s - local.set $3 - local.get $4 + local.set $5 + local.get $3 i32.const 2 i32.lt_u if i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.xor i32.sub - local.get $3 + local.get $5 i32.and local.get $0 i32.add return end - local.get $3 + local.get $5 i32.const 255 i32.and local.set $2 - local.get $3 + local.get $5 i32.const 8 i32.shr_u - local.set $4 + local.set $3 loop $while-continue|0 local.get $2 if - local.get $5 + local.get $4 local.get $2 i32.const 1 i32.shr_u - local.tee $3 - local.get $4 + local.tee $5 + local.get $3 i32.add i32.const 1 i32.shl @@ -2254,7 +2090,7 @@ i32.eq if (result i32) local.get $3 - local.get $4 + local.get $5 i32.add i32.const 1 i32.shl @@ -2298,18 +2134,18 @@ i32.sub return else - local.get $5 + local.get $4 local.get $6 i32.lt_u if (result i32) - local.get $3 + local.get $5 else local.get $3 - local.get $4 + local.get $5 i32.add - local.set $4 + local.set $3 local.get $2 - local.get $3 + local.get $5 i32.sub end end @@ -2332,17 +2168,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2488,19 +2324,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2515,7 +2351,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2526,10 +2362,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2537,10 +2373,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2551,7 +2387,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2581,17 +2417,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2606,7 +2442,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2617,10 +2453,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2628,10 +2464,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2642,7 +2478,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2668,17 +2504,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2693,7 +2529,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2704,10 +2540,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2715,10 +2551,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2729,7 +2565,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2766,131 +2602,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2907,59 +2721,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2976,7 +2784,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2987,11 +2795,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3005,17 +2813,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3226,7 +3034,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -3235,28 +3043,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3284,7 +3092,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -3298,32 +3106,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -3340,29 +3147,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3484,25 +3291,25 @@ (local $3 i32) (local $4 i32) (local $5 i32) - 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 21092 - i32.lt_s - if - i32.const 37504 - i32.const 37552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 + block $__inlined_func$~lib/util/number/itoa64 (result i32) + 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 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i64.eqz if @@ -3511,7 +3318,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 19200 - local.set $1 br $__inlined_func$~lib/util/number/itoa64 end i64.const 0 @@ -3522,7 +3328,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $4 + local.tee $3 select local.tee $0 i64.const 4294967295 @@ -3531,7 +3337,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $3 + local.tee $2 local.tee $1 i32.const 100000 i32.lt_u @@ -3578,9 +3384,9 @@ i32.add end end - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $4 i32.const 1 i32.shl i32.const 1 @@ -3588,8 +3394,8 @@ local.tee $1 i32.store local.get $1 - local.get $3 local.get $2 + local.get $4 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -3643,7 +3449,7 @@ i32.add end end - local.get $4 + local.get $3 i32.add local.tee $2 i32.const 1 @@ -3674,7 +3480,7 @@ i64.mul i64.sub i32.wrap_i64 - local.tee $3 + local.tee $4 i32.const 10000 i32.rem_u local.tee $5 @@ -3705,10 +3511,10 @@ i32.shl local.get $1 i32.add - local.get $3 + local.get $4 i32.const 10000 i32.div_u - local.tee $3 + local.tee $4 i32.const 100 i32.div_u i32.const 2 @@ -3716,7 +3522,7 @@ i32.const 19212 i32.add i64.load32_u - local.get $3 + local.get $4 i32.const 100 i32.rem_u i32.const 2 @@ -3737,7 +3543,7 @@ local.get $2 call $~lib/util/number/utoa32_dec_lut end - local.get $4 + local.get $3 if local.get $1 i32.const 45 @@ -3747,32 +3553,32 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $1 ) (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - 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 21092 - i32.lt_s - if - i32.const 37504 - i32.const 37552 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat + block $__inlined_func$~lib/string/String#concat (result i32) + 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 21092 + i32.lt_s + if + i32.const 37504 + i32.const 37552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 20 i32.sub @@ -3781,7 +3587,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3790,9 +3596,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3800,31 +3606,30 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1056 - local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -3847,7 +3652,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -3935,18 +3740,17 @@ i32.shr_u if block $for-continue|0 - local.get $8 - i32.const 1 - i32.sub - local.get $7 - i32.gt_u - i32.const 0 local.get $2 i32.const 55295 i32.sub i32.const 1025 i32.lt_u - select + local.get $8 + i32.const 1 + i32.sub + local.get $7 + i32.gt_u + i32.and if local.get $7 i32.const 1 @@ -4082,22 +3886,22 @@ i32.shl i32.const 1488 i32.add - local.tee $2 + local.tee $1 i32.load16_u offset=6 - local.set $1 + local.set $2 local.get $5 i32.const 1 i32.shl local.get $6 i32.add local.tee $4 - local.get $2 + local.get $1 i32.load offset=2 i32.store local.get $4 - local.get $1 + local.get $2 i32.store16 offset=4 - local.get $1 + local.get $2 i32.const 0 i32.ne i32.const 1 @@ -4188,15 +3992,15 @@ ) (func $start:std/string-casemapping (local $0 i64) - (local $1 i64) + (local $1 i32) (local $2 i64) (local $3 i64) - (local $4 i32) + (local $4 i64) (local $5 i32) - (local $6 i64) + (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) global.get $~lib/memory/__stack_pointer i32.const 28 i32.sub @@ -4213,16 +4017,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $1 i64.const 0 i64.store - local.get $9 + local.get $1 i64.const 0 i64.store offset=8 - local.get $9 + local.get $1 i64.const 0 i64.store offset=16 - local.get $9 + local.get $1 i32.const 0 i32.store offset=24 memory.size @@ -4257,19 +4061,19 @@ i32.store i32.const 1376 global.set $~lib/rt/itcms/fromSpace - local.get $9 + local.get $1 i32.const 1056 i32.store offset=8 i32.const 1056 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 - local.get $9 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4286,14 +4090,14 @@ i32.store offset=8 i32.const 1056 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=4 - local.get $9 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4310,14 +4114,14 @@ i32.store offset=8 i32.const 11808 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 11856 i32.store offset=4 - local.get $9 + local.get $1 i32.const 11856 call $~lib/string/String.__eq i32.eqz @@ -4334,14 +4138,14 @@ i32.store offset=8 i32.const 11904 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 11952 i32.store offset=4 - local.get $9 + local.get $1 i32.const 11952 call $~lib/string/String.__eq i32.eqz @@ -4358,14 +4162,14 @@ i32.store offset=8 i32.const 12000 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12096 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12096 call $~lib/string/String.__eq i32.eqz @@ -4382,14 +4186,14 @@ i32.store offset=8 i32.const 12096 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12192 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12192 call $~lib/string/String.__eq i32.eqz @@ -4406,14 +4210,14 @@ i32.store offset=8 i32.const 12288 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12352 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12352 call $~lib/string/String.__eq i32.eqz @@ -4430,14 +4234,14 @@ i32.store offset=8 i32.const 12352 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12416 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12416 call $~lib/string/String.__eq i32.eqz @@ -4454,14 +4258,14 @@ i32.store offset=8 i32.const 12480 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12576 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12576 call $~lib/string/String.__eq i32.eqz @@ -4478,14 +4282,14 @@ i32.store offset=8 i32.const 12576 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12672 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12672 call $~lib/string/String.__eq i32.eqz @@ -4502,14 +4306,14 @@ i32.store offset=8 i32.const 12768 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12864 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12864 call $~lib/string/String.__eq i32.eqz @@ -4526,14 +4330,14 @@ i32.store offset=8 i32.const 12864 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 12960 i32.store offset=4 - local.get $9 + local.get $1 i32.const 12960 call $~lib/string/String.__eq i32.eqz @@ -4550,14 +4354,14 @@ i32.store offset=8 i32.const 13056 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13136 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13136 call $~lib/string/String.__eq i32.eqz @@ -4574,14 +4378,14 @@ i32.store offset=8 i32.const 13216 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13296 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13296 call $~lib/string/String.__eq i32.eqz @@ -4598,14 +4402,14 @@ i32.store offset=8 i32.const 13376 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13440 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13440 call $~lib/string/String.__eq i32.eqz @@ -4622,14 +4426,14 @@ i32.store offset=8 i32.const 13504 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13584 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13584 call $~lib/string/String.__eq i32.eqz @@ -4646,14 +4450,14 @@ i32.store offset=8 i32.const 13664 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13744 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13744 call $~lib/string/String.__eq i32.eqz @@ -4670,14 +4474,14 @@ i32.store offset=8 i32.const 13824 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 13888 i32.store offset=4 - local.get $9 + local.get $1 i32.const 13888 call $~lib/string/String.__eq i32.eqz @@ -4694,14 +4498,14 @@ i32.store offset=8 i32.const 13952 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14032 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14032 call $~lib/string/String.__eq i32.eqz @@ -4718,14 +4522,14 @@ i32.store offset=8 i32.const 14112 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14192 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14192 call $~lib/string/String.__eq i32.eqz @@ -4742,14 +4546,14 @@ i32.store offset=8 i32.const 14272 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14432 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14432 call $~lib/string/String.__eq i32.eqz @@ -4766,14 +4570,14 @@ i32.store offset=8 i32.const 14272 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14592 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14592 call $~lib/string/String.__eq i32.eqz @@ -4790,14 +4594,14 @@ i32.store offset=8 i32.const 14752 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14784 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14784 call $~lib/string/String.__eq i32.eqz @@ -4814,14 +4618,14 @@ i32.store offset=8 i32.const 14816 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 14848 i32.store offset=4 - local.get $9 + local.get $1 i32.const 14848 call $~lib/string/String.__eq i32.eqz @@ -4838,14 +4642,14 @@ i32.store offset=8 i32.const 14880 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15088 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15088 call $~lib/string/String.__eq i32.eqz @@ -4862,20 +4666,20 @@ i32.store offset=12 i32.const 14752 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15296 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15296 call $~lib/string/String.__eq i32.eqz @@ -4892,20 +4696,20 @@ i32.store offset=12 i32.const 15328 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15360 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15360 call $~lib/string/String.__eq i32.eqz @@ -4922,20 +4726,20 @@ i32.store offset=12 i32.const 15392 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15392 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15392 call $~lib/string/String.__eq i32.eqz @@ -4949,20 +4753,20 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15648 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15648 call $~lib/string/String.__eq i32.eqz @@ -4976,20 +4780,20 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 - local.get $9 + local.get $1 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15648 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15648 call $~lib/string/String.__eq i32.eqz @@ -5006,14 +4810,14 @@ i32.store offset=8 i32.const 15680 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15712 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15712 call $~lib/string/String.__eq i32.eqz @@ -5030,14 +4834,14 @@ i32.store offset=8 i32.const 15744 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15776 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15776 call $~lib/string/String.__eq i32.eqz @@ -5054,14 +4858,14 @@ i32.store offset=8 i32.const 15808 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15840 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15840 call $~lib/string/String.__eq i32.eqz @@ -5078,14 +4882,14 @@ i32.store offset=8 i32.const 15872 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15904 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15904 call $~lib/string/String.__eq i32.eqz @@ -5102,14 +4906,14 @@ i32.store offset=8 i32.const 15936 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 15968 i32.store offset=4 - local.get $9 + local.get $1 i32.const 15968 call $~lib/string/String.__eq i32.eqz @@ -5126,14 +4930,14 @@ i32.store offset=8 i32.const 16000 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16032 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16032 call $~lib/string/String.__eq i32.eqz @@ -5150,14 +4954,14 @@ i32.store offset=8 i32.const 16064 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16096 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16096 call $~lib/string/String.__eq i32.eqz @@ -5174,14 +4978,14 @@ i32.store offset=8 i32.const 16128 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16160 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16160 call $~lib/string/String.__eq i32.eqz @@ -5198,14 +5002,14 @@ i32.store offset=8 i32.const 16192 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16224 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16224 call $~lib/string/String.__eq i32.eqz @@ -5222,14 +5026,14 @@ i32.store offset=8 i32.const 16256 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16288 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16288 call $~lib/string/String.__eq i32.eqz @@ -5246,14 +5050,14 @@ i32.store offset=8 i32.const 16320 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16352 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16352 call $~lib/string/String.__eq i32.eqz @@ -5270,14 +5074,14 @@ i32.store offset=8 i32.const 16384 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16416 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16416 call $~lib/string/String.__eq i32.eqz @@ -5294,14 +5098,14 @@ i32.store offset=8 i32.const 16448 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16480 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16480 call $~lib/string/String.__eq i32.eqz @@ -5318,14 +5122,14 @@ i32.store offset=8 i32.const 16512 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16544 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16544 call $~lib/string/String.__eq i32.eqz @@ -5342,14 +5146,14 @@ i32.store offset=8 i32.const 16576 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16608 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16608 call $~lib/string/String.__eq i32.eqz @@ -5366,14 +5170,14 @@ i32.store offset=8 i32.const 16640 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16672 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16672 call $~lib/string/String.__eq i32.eqz @@ -5390,14 +5194,14 @@ i32.store offset=8 i32.const 16704 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16736 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16736 call $~lib/string/String.__eq i32.eqz @@ -5414,14 +5218,14 @@ i32.store offset=8 i32.const 16768 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16800 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16800 call $~lib/string/String.__eq i32.eqz @@ -5438,14 +5242,14 @@ i32.store offset=8 i32.const 16832 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16864 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16864 call $~lib/string/String.__eq i32.eqz @@ -5462,14 +5266,14 @@ i32.store offset=8 i32.const 16896 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16928 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16928 call $~lib/string/String.__eq i32.eqz @@ -5486,14 +5290,14 @@ i32.store offset=8 i32.const 16960 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16992 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16992 call $~lib/string/String.__eq i32.eqz @@ -5510,14 +5314,14 @@ i32.store offset=8 i32.const 17024 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17056 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17056 call $~lib/string/String.__eq i32.eqz @@ -5534,14 +5338,14 @@ i32.store offset=8 i32.const 17088 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17120 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17120 call $~lib/string/String.__eq i32.eqz @@ -5558,14 +5362,14 @@ i32.store offset=8 i32.const 17152 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17184 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17184 call $~lib/string/String.__eq i32.eqz @@ -5582,14 +5386,14 @@ i32.store offset=8 i32.const 17216 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17248 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17248 call $~lib/string/String.__eq i32.eqz @@ -5606,14 +5410,14 @@ i32.store offset=8 i32.const 17280 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 16352 i32.store offset=4 - local.get $9 + local.get $1 i32.const 16352 call $~lib/string/String.__eq i32.eqz @@ -5630,14 +5434,14 @@ i32.store offset=8 i32.const 17312 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17344 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17344 call $~lib/string/String.__eq i32.eqz @@ -5654,14 +5458,14 @@ i32.store offset=8 i32.const 17376 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17408 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17408 call $~lib/string/String.__eq i32.eqz @@ -5678,14 +5482,14 @@ i32.store offset=8 i32.const 17440 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17472 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17472 call $~lib/string/String.__eq i32.eqz @@ -5702,14 +5506,14 @@ i32.store offset=8 i32.const 17504 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17536 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17536 call $~lib/string/String.__eq i32.eqz @@ -5726,14 +5530,14 @@ i32.store offset=8 i32.const 17568 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17600 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17600 call $~lib/string/String.__eq i32.eqz @@ -5750,14 +5554,14 @@ i32.store offset=8 i32.const 17632 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17664 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17664 call $~lib/string/String.__eq i32.eqz @@ -5774,14 +5578,14 @@ i32.store offset=8 i32.const 17696 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17728 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17728 call $~lib/string/String.__eq i32.eqz @@ -5798,14 +5602,14 @@ i32.store offset=8 i32.const 17760 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17792 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17792 call $~lib/string/String.__eq i32.eqz @@ -5822,14 +5626,14 @@ i32.store offset=8 i32.const 17824 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17856 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17856 call $~lib/string/String.__eq i32.eqz @@ -5846,14 +5650,14 @@ i32.store offset=8 i32.const 17888 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17920 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17920 call $~lib/string/String.__eq i32.eqz @@ -5870,14 +5674,14 @@ i32.store offset=8 i32.const 17952 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 17984 i32.store offset=4 - local.get $9 + local.get $1 i32.const 17984 call $~lib/string/String.__eq i32.eqz @@ -5894,14 +5698,14 @@ i32.store offset=8 i32.const 18016 call $~lib/string/String#toLowerCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18048 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18048 call $~lib/string/String.__eq i32.eqz @@ -5918,14 +5722,14 @@ i32.store offset=8 i32.const 18080 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18112 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18112 call $~lib/string/String.__eq i32.eqz @@ -5942,14 +5746,14 @@ i32.store offset=8 i32.const 15328 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18144 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18144 call $~lib/string/String.__eq i32.eqz @@ -5966,14 +5770,14 @@ i32.store offset=8 i32.const 18176 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18208 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18208 call $~lib/string/String.__eq i32.eqz @@ -5990,14 +5794,14 @@ i32.store offset=8 i32.const 18240 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18272 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18272 call $~lib/string/String.__eq i32.eqz @@ -6014,14 +5818,14 @@ i32.store offset=8 i32.const 18304 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18336 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18336 call $~lib/string/String.__eq i32.eqz @@ -6038,14 +5842,14 @@ i32.store offset=8 i32.const 18368 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18400 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18400 call $~lib/string/String.__eq i32.eqz @@ -6062,14 +5866,14 @@ i32.store offset=8 i32.const 18432 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18400 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18400 call $~lib/string/String.__eq i32.eqz @@ -6086,14 +5890,14 @@ i32.store offset=8 i32.const 18464 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18496 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18496 call $~lib/string/String.__eq i32.eqz @@ -6110,14 +5914,14 @@ i32.store offset=8 i32.const 18528 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18560 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18560 call $~lib/string/String.__eq i32.eqz @@ -6134,14 +5938,14 @@ i32.store offset=8 i32.const 18592 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18624 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18624 call $~lib/string/String.__eq i32.eqz @@ -6158,14 +5962,14 @@ i32.store offset=8 i32.const 18656 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18688 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18688 call $~lib/string/String.__eq i32.eqz @@ -6182,14 +5986,14 @@ i32.store offset=8 i32.const 18720 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18752 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18752 call $~lib/string/String.__eq i32.eqz @@ -6206,14 +6010,14 @@ i32.store offset=8 i32.const 18784 call $~lib/string/String#toUpperCase - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store global.get $~lib/memory/__stack_pointer i32.const 18816 i32.store offset=4 - local.get $9 + local.get $1 i32.const 18816 call $~lib/string/String.__eq i32.eqz @@ -6226,424 +6030,429 @@ unreachable end loop $for-loop|0 - local.get $8 + local.get $5 i32.const 1114111 i32.le_s if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $5 call $~lib/string/String.fromCodePoint - local.tee $9 + local.tee $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 call $~lib/string/String#toLowerCase - local.tee $5 + local.tee $6 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 call $~lib/string/String#toUpperCase - local.tee $4 + local.tee $1 i32.store offset=24 - block $__inlined_func$~lib/string/String#codePointAt - local.get $5 + block $__inlined_func$~lib/string/String#codePointAt (result i32) + i32.const -1 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $7 i32.eqz - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt + drop + local.get $7 i32.const 1 i32.eq - local.get $5 + local.get $6 i32.load16_u - local.tee $9 + local.tee $7 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt - local.get $5 + i32.or + if + local.get $7 + br $__inlined_func$~lib/string/String#codePointAt + end + local.get $7 + local.get $6 i32.load16_u offset=2 - local.tee $7 + local.tee $8 i32.const 64512 i32.and i32.const 56320 i32.ne br_if $__inlined_func$~lib/string/String#codePointAt + drop + local.get $8 local.get $7 - local.get $9 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s local.set $0 - block $__inlined_func$~lib/string/String#codePointAt0 - local.get $5 + block $__inlined_func$~lib/string/String#codePointAt6 (result i32) + i32.const -1 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $7 i32.const 1 i32.le_u - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt0 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt6 + drop + local.get $7 i32.const 2 i32.eq - local.get $5 + local.get $6 i32.load16_u offset=2 - local.tee $9 + local.tee $7 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt0 - local.get $5 + i32.or + if + local.get $7 + br $__inlined_func$~lib/string/String#codePointAt6 + end + local.get $7 + local.get $6 i32.load16_u offset=4 - local.tee $7 + local.tee $8 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt0 + br_if $__inlined_func$~lib/string/String#codePointAt6 + drop + local.get $8 local.get $7 - local.get $9 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.tee $3 + local.tee $2 i64.const 0 i64.ge_s if - local.get $3 + local.get $2 i64.const 16 i64.shl local.get $0 i64.add local.set $0 end - block $__inlined_func$~lib/string/String#codePointAt1 - local.get $5 + block $__inlined_func$~lib/string/String#codePointAt8 (result i32) + i32.const -1 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $7 i32.const 2 i32.le_u - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt1 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt8 + drop + local.get $7 i32.const 3 i32.eq - local.get $5 + local.get $6 i32.load16_u offset=4 - local.tee $9 + local.tee $7 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt1 - local.get $5 + i32.or + if + local.get $7 + br $__inlined_func$~lib/string/String#codePointAt8 + end + local.get $7 + local.get $6 i32.load16_u offset=6 - local.tee $5 + local.tee $6 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt1 - local.get $5 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt8 + drop + local.get $6 + local.get $7 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.tee $3 + local.tee $2 i64.const 0 i64.ge_s - if - local.get $3 + if (result i64) + local.get $2 i64.const 32 i64.shl local.get $0 i64.add - local.set $0 + else + local.get $0 end - block $__inlined_func$~lib/string/String#codePointAt2 - local.get $4 - local.tee $5 + local.set $2 + block $__inlined_func$~lib/string/String#codePointAt10 (result i32) + i32.const -1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $6 i32.eqz - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt2 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt10 + drop + local.get $6 i32.const 1 i32.eq - local.get $5 + local.get $1 i32.load16_u - local.tee $9 + local.tee $6 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt2 - local.get $5 + i32.or + if + local.get $6 + br $__inlined_func$~lib/string/String#codePointAt10 + end + local.get $6 + local.get $1 i32.load16_u offset=2 - local.tee $4 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt2 - local.get $4 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt10 + drop + local.get $7 + local.get $6 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.set $3 - block $__inlined_func$~lib/string/String#codePointAt3 - local.get $5 + local.set $0 + block $__inlined_func$~lib/string/String#codePointAt12 (result i32) + i32.const -1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $6 i32.const 1 i32.le_u - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt3 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt12 + drop + local.get $6 i32.const 2 i32.eq - local.get $5 + local.get $1 i32.load16_u offset=2 - local.tee $9 + local.tee $6 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt3 - local.get $5 + i32.or + if + local.get $6 + br $__inlined_func$~lib/string/String#codePointAt12 + end + local.get $6 + local.get $1 i32.load16_u offset=4 - local.tee $4 + local.tee $7 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt3 - local.get $4 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt12 + drop + local.get $7 + local.get $6 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.tee $2 + local.tee $3 i64.const 0 i64.ge_s if - local.get $2 + local.get $3 i64.const 16 i64.shl - local.get $3 + local.get $0 i64.add - local.set $3 + local.set $0 end - block $__inlined_func$~lib/string/String#codePointAt4 - local.get $5 + block $__inlined_func$~lib/string/String#codePointAt14 (result i32) + i32.const -1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $9 + local.tee $6 i32.const 2 i32.le_u - if - i32.const -1 - local.set $9 - br $__inlined_func$~lib/string/String#codePointAt4 - end - i32.const 1 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt14 + drop + local.get $6 i32.const 3 i32.eq - local.get $5 + local.get $1 i32.load16_u offset=4 - local.tee $9 + local.tee $6 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt4 - local.get $5 + i32.or + if + local.get $6 + br $__inlined_func$~lib/string/String#codePointAt14 + end + local.get $6 + local.get $1 i32.load16_u offset=6 - local.tee $5 + local.tee $1 i32.const 64512 i32.and i32.const 56320 i32.ne - br_if $__inlined_func$~lib/string/String#codePointAt4 - local.get $5 - local.get $9 + br_if $__inlined_func$~lib/string/String#codePointAt14 + drop + local.get $1 + local.get $6 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $9 end - local.get $9 i64.extend_i32_s - local.tee $2 + local.tee $3 i64.const 0 i64.ge_s - if - local.get $2 + if (result i64) + local.get $3 i64.const 32 i64.shl - local.get $3 + local.get $0 i64.add - local.set $3 + else + local.get $0 end - local.get $8 + local.set $3 + local.get $5 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.set $2 - local.get $8 + local.set $0 + local.get $5 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $1 + local.tee $4 i64.const 0 i64.ge_s if - local.get $1 + local.get $4 i64.const 16 i64.shl - local.get $2 + local.get $0 i64.add - local.set $2 + local.set $0 end - local.get $8 + local.get $5 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $1 + local.tee $4 i64.const 0 i64.ge_s - if - local.get $1 + if (result i64) + local.get $4 i64.const 32 i64.shl - local.get $2 + local.get $0 i64.add - local.set $2 + else + local.get $0 end - local.get $8 + local.set $4 + local.get $5 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.set $1 - local.get $8 + local.set $0 + local.get $5 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $6 + local.tee $9 i64.const 0 i64.ge_s if - local.get $6 + local.get $9 i64.const 16 i64.shl - local.get $1 + local.get $0 i64.add - local.set $1 + local.set $0 end - local.get $8 + local.get $5 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $6 + local.tee $9 i64.const 0 i64.ge_s if - local.get $6 + local.get $9 i64.const 32 i64.shl - local.get $1 + local.get $0 i64.add - local.set $1 + local.set $0 end - local.get $0 local.get $2 + local.get $4 i64.ne if global.get $~lib/memory/__stack_pointer @@ -6651,7 +6460,7 @@ i32.store i32.const 18848 i32.const 1 - local.get $8 + local.get $5 f64.convert_i32_s f64.const 0 f64.const 0 @@ -6661,20 +6470,20 @@ global.get $~lib/memory/__stack_pointer i32.const 18944 i32.store offset=4 - local.get $0 + local.get $2 call $~lib/number/I64#toString - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 i32.const 18944 - local.get $9 + local.get $1 call $~lib/string/String.__concat - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store - local.get $9 + local.get $1 i32.const 0 f64.const 0 f64.const 0 @@ -6685,20 +6494,20 @@ global.get $~lib/memory/__stack_pointer i32.const 20784 i32.store offset=4 - local.get $2 + local.get $4 call $~lib/number/I64#toString - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 i32.const 20784 - local.get $9 + local.get $1 call $~lib/string/String.__concat - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store - local.get $9 + local.get $1 i32.const 0 f64.const 0 f64.const 0 @@ -6707,7 +6516,7 @@ f64.const 0 call $~lib/builtins/trace end - local.get $1 + local.get $0 local.get $3 i64.ne if @@ -6716,7 +6525,7 @@ i32.store i32.const 20848 i32.const 1 - local.get $8 + local.get $5 f64.convert_i32_s f64.const 0 f64.const 0 @@ -6728,18 +6537,18 @@ i32.store offset=4 local.get $3 call $~lib/number/I64#toString - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 i32.const 20944 - local.get $9 + local.get $1 call $~lib/string/String.__concat - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store - local.get $9 + local.get $1 i32.const 0 f64.const 0 f64.const 0 @@ -6750,20 +6559,20 @@ global.get $~lib/memory/__stack_pointer i32.const 21008 i32.store offset=4 - local.get $1 + local.get $0 call $~lib/number/I64#toString - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store offset=8 i32.const 21008 - local.get $9 + local.get $1 call $~lib/string/String.__concat - local.set $9 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $1 i32.store - local.get $9 + local.get $1 i32.const 0 f64.const 0 f64.const 0 @@ -6772,10 +6581,10 @@ f64.const 0 call $~lib/builtins/trace end - local.get $8 + local.get $5 i32.const 1 i32.add - local.set $8 + local.set $5 br $for-loop|0 end end @@ -6795,6 +6604,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -6835,57 +6645,56 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store loop $for-loop|0 - local.get $4 + local.get $3 local.get $8 i32.lt_u if - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u - local.tee $3 + local.tee $2 i32.const 7 i32.shr_u if block $for-continue|0 - local.get $8 - i32.const 1 - i32.sub - local.get $4 - i32.gt_u - i32.const 0 - local.get $3 + local.get $2 i32.const 55295 i32.sub i32.const 1025 i32.lt_u - select + local.get $8 + i32.const 1 + i32.sub + local.get $3 + i32.gt_u + i32.and if - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u offset=2 - local.tee $7 + local.tee $4 i32.const 56319 i32.sub i32.const 1025 i32.lt_u if - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 - local.get $7 + local.set $3 + local.get $4 i32.const 1023 i32.and - local.get $3 + local.get $2 local.tee $1 i32.const 1023 i32.and @@ -6894,53 +6703,53 @@ i32.or i32.const 65536 i32.add - local.tee $3 + local.tee $2 i32.const 131072 i32.ge_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 - i32.add local.get $7 + i32.add + local.get $4 i32.const 16 i32.shl local.get $1 i32.or i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-continue|0 end end end - local.get $3 + local.get $2 i32.const 304 i32.eq if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add i32.const 50790505 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 else - local.get $3 + local.get $2 i32.const 931 i32.eq if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add i32.const 962 i32.const 963 @@ -6950,31 +6759,32 @@ if (result i32) block $~lib/util/string/isFinalSigma|inlined.0 (result i32) i32.const 0 - local.set $2 + local.set $1 + local.get $3 i32.const 0 - local.get $4 - local.tee $3 + local.get $3 + local.tee $2 i32.const 30 i32.sub - local.tee $1 - local.get $1 + local.tee $5 + local.get $5 i32.const 0 i32.lt_s select local.set $9 loop $while-continue|1 - local.get $3 + local.get $2 local.get $9 i32.gt_s if i32.const -1 - local.set $1 + local.set $5 block $~lib/util/string/codePointBefore|inlined.0 - local.get $3 + local.get $2 i32.const 0 i32.le_s br_if $~lib/util/string/codePointBefore|inlined.0 - local.get $3 + local.get $2 i32.const 1 i32.sub i32.const 1 @@ -6982,22 +6792,22 @@ local.get $0 i32.add i32.load16_u - local.tee $7 + local.tee $11 i32.const 64512 i32.and i32.const 56320 i32.eq - local.get $3 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.ge_s i32.and if - local.get $7 + local.get $11 i32.const 1023 i32.and - local.get $3 + local.get $2 i32.const 2 i32.sub i32.const 1 @@ -7013,7 +6823,7 @@ i32.add i32.const 65536 i32.add - local.set $1 + local.set $5 local.get $10 i32.const 64512 i32.and @@ -7022,20 +6832,20 @@ br_if $~lib/util/string/codePointBefore|inlined.0 end i32.const 65533 - local.get $7 - local.get $7 + local.get $11 + local.get $11 i32.const 63488 i32.and i32.const 55296 i32.eq select - local.set $1 + local.set $5 end - local.get $1 + local.get $5 i32.const 918000 i32.lt_u if (result i32) - local.get $1 + local.get $5 i32.const 8 i32.shr_u i32.const 7212 @@ -7045,14 +6855,14 @@ i32.shl i32.const 7212 i32.add - local.get $1 + local.get $5 i32.const 255 i32.and i32.const 3 i32.shr_u i32.add i32.load8_u - local.get $1 + local.get $5 i32.const 7 i32.and i32.shr_u @@ -7063,12 +6873,11 @@ end i32.eqz if - i32.const 0 - local.get $1 + local.get $5 i32.const 127370 i32.lt_u if (result i32) - local.get $1 + local.get $5 i32.const 8 i32.shr_u i32.const 10220 @@ -7078,14 +6887,14 @@ i32.shl i32.const 10220 i32.add - local.get $1 + local.get $5 i32.const 255 i32.and i32.const 3 i32.shr_u i32.add i32.load8_u - local.get $1 + local.get $5 i32.const 7 i32.and i32.shr_u @@ -7094,32 +6903,33 @@ else i32.const 0 end - i32.eqz - br_if $~lib/util/string/isFinalSigma|inlined.0 - drop - i32.const 1 - local.set $2 + if (result i32) + i32.const 1 + else + i32.const 0 + br $~lib/util/string/isFinalSigma|inlined.0 + end + local.set $1 end - local.get $3 - local.get $1 + local.get $2 + local.get $5 i32.const 65536 i32.ge_s i32.const 1 i32.add i32.sub - local.set $3 + local.set $2 br $while-continue|1 end end i32.const 0 - local.get $2 + local.get $1 i32.eqz br_if $~lib/util/string/isFinalSigma|inlined.0 drop - local.get $4 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 30 i32.add local.tee $1 @@ -7128,13 +6938,13 @@ local.get $8 i32.lt_s select - local.set $2 + local.set $4 loop $while-continue|2 local.get $2 - local.get $3 - i32.gt_s + local.get $4 + i32.lt_s if - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 @@ -7146,25 +6956,25 @@ i32.const 55296 i32.eq local.get $8 - local.get $3 + local.get $2 i32.const 1 i32.add i32.ne i32.and if - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u offset=2 - local.tee $7 + local.tee $5 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $7 + local.get $5 local.get $1 i32.const 10 i32.shl @@ -7244,9 +7054,9 @@ i32.ge_u i32.const 1 i32.add - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 br $while-continue|2 end end @@ -7258,53 +7068,53 @@ select i32.store16 else - local.get $3 + local.get $2 i32.const 9398 i32.sub i32.const 25 i32.le_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $2 i32.const 26 i32.add i32.store16 else - local.get $3 + local.get $2 i32.const 0 call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.tee $3 + local.tee $1 i32.const 65536 i32.lt_u if - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $1 i32.store16 else - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $1 i32.const 65536 i32.sub - local.tee $3 + local.tee $1 i32.const 10 i32.shr_u i32.const 55296 i32.or - local.get $3 + local.get $1 i32.const 1023 i32.and i32.const 56320 @@ -7313,40 +7123,40 @@ i32.shl i32.or i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 end end end end end else - local.get $5 + local.get $6 i32.const 1 i32.shl - local.get $6 + local.get $7 i32.add - local.get $3 + local.get $2 i32.const 7084 i32.add i32.load8_u i32.store16 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 - local.get $5 + local.set $3 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|0 end end + local.get $7 local.get $6 - local.get $5 i32.const 1 i32.shl call $~lib/rt/itcms/__renew @@ -7430,4 +7240,153 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 37476 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 21056 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 21060 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index c205a6bed6..cf75434ac5 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -73,13 +73,13 @@ (local $0 i32) (local $1 i32) i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1344 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1712 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -118,160 +118,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 38924 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 22512 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1344 - i32.const 1408 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 22516 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -308,11 +154,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -324,28 +169,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -357,19 +199,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -394,9 +236,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -404,17 +246,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -542,7 +384,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -553,7 +395,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -573,44 +415,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -620,7 +461,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -630,20 +471,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -671,7 +512,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -698,15 +539,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -718,15 +556,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -747,6 +585,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -756,7 +597,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -793,8 +634,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -953,7 +794,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1078,7 +923,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1088,7 +933,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1101,14 +946,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1133,56 +977,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1283,12 +1124,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1304,14 +1145,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1322,18 +1163,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1344,54 +1184,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1399,16 +1235,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1416,15 +1252,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1452,12 +1288,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1471,7 +1307,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1481,7 +1317,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1499,12 +1335,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1534,8 +1370,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1564,19 +1400,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1585,18 +1421,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1605,10 +1441,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1617,97 +1453,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1739,7 +1575,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1754,17 +1590,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1910,19 +1746,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1937,7 +1773,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1948,10 +1784,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1959,10 +1795,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1973,7 +1809,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2003,17 +1839,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2028,7 +1864,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2039,10 +1875,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2050,10 +1886,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2064,7 +1900,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2090,17 +1926,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2115,7 +1951,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2126,10 +1962,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2137,10 +1973,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2151,7 +1987,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2188,131 +2024,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2329,59 +2143,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2398,7 +2206,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2409,11 +2217,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2427,17 +2235,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2668,7 +2476,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2682,32 +2490,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2724,29 +2531,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2802,18 +2609,17 @@ i32.const 2 i32.add else + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq local.get $4 local.get $0 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $3 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select if local.get $0 i32.load16_u offset=2 @@ -2888,7 +2694,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -2897,16 +2703,15 @@ (func $~start (local $0 i32) (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 + 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 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2918,7 +2723,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -2981,7 +2786,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3159,7 +2964,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3183,10 +2988,9 @@ call $~lib/string/String.UTF16.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=8 local.get $0 @@ -3205,215 +3009,15 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF16DecodeUnsafe global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1052 - i32.load - local.set $2 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1552 - i32.store offset=8 - local.get $1 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1056 - i32.store offset=8 - local.get $1 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1584 - i32.store offset=8 - local.get $1 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1616 - i32.store offset=8 - local.get $1 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1648 - i32.store offset=8 - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 8 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1680 - i32.store offset=8 - local.get $1 - i32.const 1680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - i32.add - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 1552 - i32.store offset=8 - local.get $0 - i32.const 1552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - 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 22540 - i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -3461,7 +3065,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3622,7 +3226,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3793,7 +3397,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3838,20 +3442,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 1824 i32.store offset=4 i32.const 1824 i32.const 0 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 + i32.store local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3875,20 +3479,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 1888 i32.store offset=4 i32.const 1888 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.encode - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 + i32.store local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3912,20 +3516,20 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 1888 i32.store offset=4 i32.const 1888 i32.const 0 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store local.get $1 + i32.store local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3959,7 +3563,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3987,10 +3591,9 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=8 local.get $0 @@ -4016,7 +3619,7 @@ global.get $~lib/memory/__stack_pointer i32.const 22540 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4050,10 +3653,9 @@ call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store offset=8 local.get $0 @@ -4237,7 +3839,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/string-encoding/testUTF8DecodeUnsafe + (func $std/string-encoding/testUTF16DecodeUnsafe (local $0 i32) (local $1 i32) (local $2 i32) @@ -4257,66 +3859,279 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1056 i32.store - i32.const 2 - global.set $~argumentsLength - local.get $1 + local.get $0 i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $1 + call $~lib/string/String.UTF16.encode + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store - i32.const 1056 + i32.const 1052 + i32.load + local.set $1 + local.get $0 i32.const 0 - call $~lib/string/String.UTF8.byteLength + call $~lib/string/String.UTF16.decodeUnsafe local.set $2 - local.get $1 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 1552 i32.store offset=8 - local.get $0 + local.get $2 i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1088 - i32.const 135 + i32.const 42 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 local.get $1 - local.get $2 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=8 + local.get $1 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1584 + i32.store offset=8 + local.get $1 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1616 + i32.store offset=8 + local.get $1 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1648 + i32.store offset=8 + local.get $1 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 i32.store local.get $2 + i32.const 1680 + i32.store offset=8 + local.get $1 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 12 + i32.add + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 1552 + i32.store offset=8 + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8DecodeUnsafe + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + if + i32.const 38944 + i32.const 38992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 1056 + i32.store + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + local.set $1 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1552 i32.store offset=8 + local.get $2 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=8 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -4328,19 +4143,19 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1584 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1584 call $~lib/string/String.__eq i32.eqz @@ -4352,21 +4167,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 2 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1648 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1648 call $~lib/string/String.__eq i32.eqz @@ -4378,21 +4193,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 6 i32.add i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1680 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1680 call $~lib/string/String.__eq i32.eqz @@ -4404,21 +4219,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.add i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1552 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1552 call $~lib/string/String.__eq i32.eqz @@ -4430,21 +4245,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 2000 i32.store offset=8 - local.get $0 + local.get $1 i32.const 2000 call $~lib/string/String.__eq i32.eqz @@ -4456,21 +4271,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 6 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer local.tee $2 - local.get $0 + local.get $1 i32.store local.get $2 i32.const 1680 i32.store offset=8 - local.get $0 + local.get $1 i32.const 1680 call $~lib/string/String.__eq i32.eqz @@ -4482,21 +4297,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 10 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 1552 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1552 call $~lib/string/String.__eq i32.eqz @@ -4672,20 +4487,20 @@ local.get $1 i32.const -2 i32.and - local.tee $2 + local.tee $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - local.get $0 local.get $2 + local.get $0 + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4720,11 +4535,9 @@ call $~lib/rt/itcms/__new local.tee $5 i32.store - local.get $0 - local.set $4 local.get $5 - local.set $0 - local.get $4 + local.set $4 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4732,24 +4545,24 @@ i32.shr_u i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add local.set $6 loop $while-continue|0 - local.get $4 + local.get $0 local.get $6 i32.lt_u if - local.get $4 + local.get $0 i32.load16_u local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 + local.get $4 local.get $3 i32.store8 - local.get $0 + local.get $4 i32.const 1 i32.add else @@ -4757,7 +4570,7 @@ i32.const 2048 i32.lt_u if (result i32) - local.get $0 + local.get $4 local.get $3 i32.const 6 i32.shr_u @@ -4772,7 +4585,7 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $4 i32.const 2 i32.add else @@ -4782,18 +4595,17 @@ i32.const 55296 i32.eq if + local.get $3 + i32.const 56320 + i32.lt_u local.get $6 - local.get $4 + local.get $0 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $3 - i32.const 56320 - i32.lt_u - select + i32.and if - local.get $4 + local.get $0 i32.load16_u offset=2 local.tee $7 i32.const 64512 @@ -4801,7 +4613,7 @@ i32.const 56320 i32.eq if - local.get $0 + local.get $4 local.get $3 i32.const 1023 i32.and @@ -4847,14 +4659,14 @@ i32.or i32.or i32.store - local.get $0 + local.get $4 i32.const 4 i32.add - local.set $0 - local.get $4 + local.set $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 br $while-continue|0 end end @@ -4877,7 +4689,7 @@ end local.set $3 end - local.get $0 + local.get $4 local.get $3 i32.const 12 i32.shr_u @@ -4894,29 +4706,29 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $4 local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $4 i32.const 3 i32.add end end - local.set $0 - local.get $4 + local.set $4 + local.get $0 i32.const 2 i32.add - local.set $4 + local.set $0 br $while-continue|0 end end local.get $1 if - local.get $0 + local.get $4 i32.const 0 i32.store8 end @@ -4950,14 +4762,12 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 local.get $0 - local.tee $3 + local.get $1 i32.add - local.set $5 - local.get $3 - local.get $5 - i32.gt_u + local.tee $5 + local.get $0 + i32.lt_u if i32.const 0 i32.const 1776 @@ -4972,49 +4782,49 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 + local.get $3 local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $5 i32.lt_u if block $while-break|0 - local.get $3 + local.get $0 i32.load8_u - local.set $4 - local.get $3 + local.set $6 + local.get $0 i32.const 1 i32.add - local.set $3 - local.get $4 + local.set $0 + local.get $6 i32.const 128 i32.and if - local.get $3 + local.get $0 local.get $5 i32.eq br_if $while-break|0 - local.get $3 + local.get $0 i32.load8_u i32.const 63 i32.and - local.set $6 - local.get $3 + local.set $7 + local.get $0 i32.const 1 i32.add - local.set $3 - local.get $4 + local.set $0 + local.get $6 i32.const 224 i32.and i32.const 192 i32.eq if local.get $1 + local.get $7 local.get $6 - local.get $4 i32.const 31 i32.and i32.const 6 @@ -5022,65 +4832,65 @@ i32.or i32.store16 else - local.get $3 + local.get $0 local.get $5 i32.eq br_if $while-break|0 - local.get $3 + local.get $0 i32.load8_u i32.const 63 i32.and - local.set $7 - local.get $3 + local.set $4 + local.get $0 i32.const 1 i32.add - local.set $3 - local.get $4 + local.set $0 + local.get $6 i32.const 240 i32.and i32.const 224 i32.eq if - local.get $7 local.get $4 + local.get $6 i32.const 15 i32.and i32.const 12 i32.shl - local.get $6 + local.get $7 i32.const 6 i32.shl i32.or i32.or local.set $4 else - local.get $3 + local.get $0 local.get $5 i32.eq br_if $while-break|0 - local.get $3 + local.get $0 i32.load8_u i32.const 63 i32.and - local.get $4 + local.get $6 i32.const 7 i32.and i32.const 18 i32.shl - local.get $6 + local.get $7 i32.const 12 i32.shl i32.or - local.get $7 + local.get $4 i32.const 6 i32.shl i32.or i32.or local.set $4 - local.get $3 + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 end local.get $4 i32.const 65536 @@ -5115,13 +4925,13 @@ end end else - local.get $4 + local.get $6 i32.eqz local.get $2 i32.and br_if $while-break|0 local.get $1 - local.get $4 + local.get $6 i32.store16 end local.get $1 @@ -5132,15 +4942,15 @@ end end end - block $__inlined_func$~lib/rt/itcms/__renew + block $__inlined_func$~lib/rt/itcms/__renew (result i32) local.get $1 - local.get $0 + local.get $3 i32.sub - local.tee $2 - local.get $0 + local.tee $0 + local.get $3 i32.const 20 i32.sub - local.tee $3 + local.tee $1 i32.load i32.const -4 i32.and @@ -5148,33 +4958,181 @@ i32.sub i32.le_u if - local.get $3 - local.get $2 + local.get $1 + local.get $0 i32.store offset=16 + local.get $3 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $1 - local.get $0 - local.get $2 + local.tee $2 local.get $3 + local.get $0 + local.get $1 i32.load offset=16 - local.tee $0 + local.tee $1 local.get $0 - local.get $2 - i32.gt_u + local.get $1 + i32.lt_u select call $~lib/memory/memory.copy - local.get $1 - local.set $0 + local.get $2 end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 38924 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 22512 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1344 + i32.const 1408 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 22516 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) ) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 9302607f35..0888611a85 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -956,12 +956,11 @@ i32.const 7 i32.and i32.or - i32.const 1 + i32.eqz local.get $3 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 local.get $1 @@ -1072,20 +1071,20 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 13648 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 15296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1376 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 16224 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 17280 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -1152,7 +1151,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1175,7 +1174,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -1185,15 +1184,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -1258,30 +1257,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1318,11 +1293,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -1334,28 +1308,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1367,19 +1338,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1404,9 +1375,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1414,17 +1385,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1552,7 +1523,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1563,7 +1534,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1583,44 +1554,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1630,7 +1600,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1640,20 +1610,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1681,7 +1651,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1708,15 +1678,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1728,15 +1695,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1757,6 +1724,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1766,7 +1736,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1803,8 +1773,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1963,7 +1933,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -2088,7 +2062,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -2098,7 +2072,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -2111,14 +2085,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -2143,56 +2116,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -2340,14 +2310,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2357,17 +2327,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2383,22 +2353,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -2409,11 +2379,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -2508,10 +2478,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -2519,7 +2485,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -2530,54 +2499,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 - local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end + local.tee $2 i32.const 4 local.get $5 i32.load offset=1568 - local.get $4 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -2585,16 +2550,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -2603,7 +2568,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -2611,9 +2576,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -2624,11 +2589,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -2639,12 +2604,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2657,89 +2622,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -2747,7 +2712,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2827,17 +2792,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2983,19 +2948,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3010,7 +2975,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -3021,10 +2986,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3032,10 +2997,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -3046,7 +3011,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -3076,17 +3041,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -3101,7 +3066,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -3112,10 +3077,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3123,10 +3088,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -3137,7 +3102,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -3163,17 +3128,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -3188,7 +3153,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -3199,10 +3164,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3210,10 +3175,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -3224,7 +3189,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -3261,131 +3226,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.get $1 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $3 i32.load8_u i32.store8 - local.get $1 - local.tee $4 + local.get $3 i32.const 2 i32.add local.set $1 + local.get $0 local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 i32.const 2 i32.add local.set $0 - local.get $1 - local.get $3 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $3 - i32.const 2 - i32.add - local.set $1 end local.get $2 i32.const 8 @@ -3402,59 +3345,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -3471,7 +3408,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -3482,11 +3419,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -3500,17 +3437,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3715,66 +3652,6 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1440 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -3784,7 +3661,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz if i32.const 0 @@ -3796,7 +3673,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.eqz if i32.const -1 @@ -3809,25 +3686,25 @@ i32.gt_s select local.tee $2 - local.get $3 + local.get $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select local.set $2 - local.get $3 local.get $4 + local.get $3 i32.sub - local.set $3 + local.set $4 loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.le_s if local.get $0 local.get $2 local.get $1 - local.get $4 + local.get $3 call $~lib/util/string/compareImpl i32.eqz if @@ -3877,7 +3754,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.eqz if local.get $0 @@ -3894,7 +3771,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.eqz if i32.const -1 @@ -3907,12 +3784,12 @@ i32.gt_s select local.tee $2 - local.get $3 local.get $4 + local.get $3 i32.sub - local.tee $3 + local.tee $4 local.get $2 - local.get $3 + local.get $4 i32.lt_s select local.set $2 @@ -3924,7 +3801,7 @@ local.get $0 local.get $2 local.get $1 - local.get $4 + local.get $3 call $~lib/util/string/compareImpl i32.eqz if @@ -4004,28 +3881,29 @@ return end local.get $0 + local.tee $2 i32.load16_u - local.set $2 + local.set $0 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $2 + local.get $0 i32.const 128 i32.or i32.const 160 i32.eq - local.get $2 + local.get $0 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $2 + local.get $0 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $2 + local.get $0 i32.const -8192 i32.add i32.const 10 @@ -4034,31 +3912,31 @@ drop block $break|0 block $case6|0 - local.get $2 + local.get $0 i32.const 5760 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8232 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8233 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8239 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 8287 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 12288 i32.eq br_if $case6|0 - local.get $2 + local.get $0 i32.const 65279 i32.eq br_if $case6|0 @@ -4070,12 +3948,12 @@ i32.const 0 end if - local.get $0 + local.get $2 i32.const 2 i32.add - local.tee $0 + local.tee $2 i32.load16_u - local.set $2 + local.set $0 local.get $3 i32.const 1 i32.sub @@ -4085,14 +3963,13 @@ end f64.const 1 local.set $4 - i32.const 1 - local.get $2 + local.get $0 i32.const 43 i32.eq - local.get $2 + local.get $0 i32.const 45 i32.eq - select + i32.or if local.get $3 i32.const 1 @@ -4105,28 +3982,27 @@ end f64.const -1 f64.const 1 - local.get $2 + local.get $0 i32.const 45 i32.eq select local.set $4 - local.get $0 + local.get $2 i32.const 2 i32.add - local.tee $0 + local.tee $2 i32.load16_u - local.set $2 + local.set $0 end local.get $1 if - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if f64.const nan:0x8000000000000 return @@ -4135,16 +4011,15 @@ i32.const 16 i32.eq if - local.get $2 + local.get $0 i32.const 48 i32.eq - i32.const 0 local.get $3 i32.const 2 i32.gt_s - select + i32.and if (result i32) - local.get $0 + local.get $2 i32.load16_u offset=2 i32.const 32 i32.or @@ -4158,47 +4033,46 @@ i32.const 2 i32.sub local.set $3 - local.get $0 + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 end end else + local.get $0 + i32.const 48 + i32.eq local.get $3 i32.const 2 i32.gt_s - i32.const 0 - local.get $2 - i32.const 48 - i32.eq - select + i32.and if block $break|1 block $case2|1 block $case1|1 - local.get $0 + local.get $2 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $2 + local.tee $0 i32.const 98 i32.ne if - local.get $2 + local.get $0 i32.const 111 i32.eq br_if $case1|1 - local.get $2 + local.get $0 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $0 + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 local.get $3 i32.const 2 i32.sub @@ -4207,10 +4081,10 @@ local.set $1 br $break|1 end - local.get $0 + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 local.get $3 i32.const 2 i32.sub @@ -4219,10 +4093,10 @@ local.set $1 br $break|1 end - local.get $0 + local.get $2 i32.const 4 i32.add - local.set $0 + local.set $2 local.get $3 i32.const 2 i32.sub @@ -4240,40 +4114,40 @@ loop $while-continue|2 block $while-break|2 local.get $3 - local.tee $2 + local.tee $0 i32.const 1 i32.sub local.set $3 - local.get $2 + local.get $0 if local.get $1 - local.get $0 + local.get $2 i32.load16_u - local.tee $2 + local.tee $0 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 48 i32.sub else - local.get $2 + local.get $0 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $2 + local.get $0 i32.const 55 i32.sub else - local.get $2 + local.get $0 i32.const 87 i32.sub - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 97 i32.sub i32.const 25 @@ -4281,7 +4155,7 @@ select end end - local.tee $2 + local.tee $0 i32.le_u if local.get $5 @@ -4302,14 +4176,14 @@ local.get $1 f64.convert_i32_s f64.mul - local.get $2 + local.get $0 f64.convert_i32_u f64.add local.set $5 - local.get $0 + local.get $2 i32.const 2 i32.add - local.set $0 + local.set $2 br $while-continue|2 end end @@ -4329,37 +4203,37 @@ i32.load i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 return end i32.const 4240 - local.set $5 + local.set $2 i32.const 4240 i32.load16_u - local.set $0 + local.set $1 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $0 + local.get $1 i32.const 128 i32.or i32.const 160 i32.eq - local.get $0 + local.get $1 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $0 + local.get $1 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $0 + local.get $1 i32.const -8192 i32.add i32.const 10 @@ -4368,31 +4242,31 @@ drop block $break|0 block $case6|0 - local.get $0 + local.get $1 i32.const 5760 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8232 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8233 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8239 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8287 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 12288 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 65279 i32.eq br_if $case6|0 @@ -4404,34 +4278,33 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 2 i32.add - local.tee $5 + local.tee $2 i32.load16_u - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|0 end end i32.const 1 - local.set $2 - i32.const 1 - local.get $0 + local.set $3 + local.get $1 i32.const 43 i32.eq - local.get $0 + local.get $1 i32.const 45 i32.eq - select - if - local.get $1 + i32.or + if (result i32) + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -4439,80 +4312,79 @@ end i32.const -1 i32.const 1 - local.get $0 + local.get $1 i32.const 45 i32.eq select - local.set $2 - local.get $5 + local.set $3 + local.get $2 i32.const 2 i32.add - local.tee $5 + local.tee $2 i32.load16_u - local.set $0 + else + local.get $1 end - local.get $1 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $0 i32.const 48 i32.eq - select + local.get $0 + i32.const 2 + i32.gt_s + i32.and if block $break|1 block $case2|1 block $case1|1 - local.get $5 + local.get $2 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $0 + local.tee $1 i32.const 98 i32.ne if - local.get $0 + local.get $1 i32.const 111 i32.eq br_if $case1|1 - local.get $0 + local.get $1 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 2 local.set $4 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 8 local.set $4 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 16 local.set $4 end @@ -4524,40 +4396,40 @@ local.set $4 loop $while-continue|2 block $while-break|2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 if - local.get $5 + local.get $2 i32.load16_u - local.tee $0 + local.tee $1 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 48 i32.sub else - local.get $0 + local.get $1 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $0 + local.get $1 i32.const 55 i32.sub else - local.get $0 + local.get $1 i32.const 87 i32.sub - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 97 i32.sub i32.const 25 @@ -4565,11 +4437,11 @@ select end end - local.tee $0 + local.tee $1 local.get $4 i32.ge_u if - local.get $3 + local.get $5 i32.eqz if i32.const 0 @@ -4577,66 +4449,66 @@ end br $while-break|2 end - local.get $0 - local.get $3 + local.get $1 local.get $4 + local.get $5 i32.mul i32.add - local.set $3 - local.get $5 + local.set $5 + local.get $2 i32.const 2 i32.add - local.set $5 + local.set $2 br $while-continue|2 end end end - local.get $2 local.get $3 + local.get $5 i32.mul ) (func $~lib/util/string/strtol (result i64) (local $0 i32) (local $1 i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) i32.const 4284 i32.load i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz if i64.const 0 return end i32.const 4288 - local.set $5 + local.set $2 i32.const 4288 i32.load16_u - local.set $0 + local.set $1 loop $while-continue|0 block $__inlined_func$~lib/util/string/isSpace (result i32) - local.get $0 + local.get $1 i32.const 128 i32.or i32.const 160 i32.eq - local.get $0 + local.get $1 i32.const 9 i32.sub i32.const 4 i32.le_u i32.or - local.get $0 + local.get $1 i32.const 5760 i32.lt_u br_if $__inlined_func$~lib/util/string/isSpace drop i32.const 1 - local.get $0 + local.get $1 i32.const -8192 i32.add i32.const 10 @@ -4645,31 +4517,31 @@ drop block $break|0 block $case6|0 - local.get $0 + local.get $1 i32.const 5760 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8232 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8233 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8239 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 8287 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 12288 i32.eq br_if $case6|0 - local.get $0 + local.get $1 i32.const 65279 i32.eq br_if $case6|0 @@ -4681,34 +4553,33 @@ i32.const 0 end if - local.get $5 + local.get $2 i32.const 2 i32.add - local.tee $5 + local.tee $2 i32.load16_u - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|0 end end i64.const 1 - local.set $2 - i32.const 1 - local.get $0 + local.set $5 + local.get $1 i32.const 43 i32.eq - local.get $0 + local.get $1 i32.const 45 i32.eq - select - if - local.get $1 + i32.or + if (result i32) + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.eqz if i64.const 0 @@ -4716,125 +4587,124 @@ end i64.const -1 i64.const 1 - local.get $0 + local.get $1 i32.const 45 i32.eq select - local.set $2 - local.get $5 + local.set $5 + local.get $2 i32.const 2 i32.add - local.tee $5 + local.tee $2 i32.load16_u - local.set $0 + else + local.get $1 end - local.get $1 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $0 i32.const 48 i32.eq - select + local.get $0 + i32.const 2 + i32.gt_s + i32.and if block $break|1 block $case2|1 block $case1|1 - local.get $5 + local.get $2 i32.load16_u offset=2 i32.const 32 i32.or - local.tee $0 + local.tee $1 i32.const 98 i32.ne if - local.get $0 + local.get $1 i32.const 111 i32.eq br_if $case1|1 - local.get $0 + local.get $1 i32.const 120 i32.eq br_if $case2|1 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 2 - local.set $4 + local.set $3 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 8 - local.set $4 + local.set $3 br $break|1 end - local.get $5 + local.get $2 i32.const 4 i32.add - local.set $5 - local.get $1 + local.set $2 + local.get $0 i32.const 2 i32.sub - local.set $1 + local.set $0 i32.const 16 - local.set $4 + local.set $3 end end - local.get $4 + local.get $3 i32.const 10 - local.get $4 + local.get $3 select - local.set $4 + local.set $3 loop $while-continue|2 block $while-break|2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 if - local.get $5 + local.get $2 i32.load16_u - local.tee $0 + local.tee $1 i32.const 48 i32.sub i32.const 10 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 48 i32.sub else - local.get $0 + local.get $1 i32.const 65 i32.sub i32.const 25 i32.le_u if (result i32) - local.get $0 + local.get $1 i32.const 55 i32.sub else - local.get $0 + local.get $1 i32.const 87 i32.sub - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 97 i32.sub i32.const 25 @@ -4842,11 +4712,11 @@ select end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $3 i32.ge_u if - local.get $3 + local.get $4 i64.eqz if i64.const 0 @@ -4854,24 +4724,24 @@ end br $while-break|2 end - local.get $0 + local.get $1 i64.extend_i32_u - local.get $4 - i64.extend_i32_s local.get $3 + i64.extend_i32_s + local.get $4 i64.mul i64.add - local.set $3 - local.get $5 + local.set $4 + local.get $2 i32.const 2 i32.add - local.set $5 + local.set $2 br $while-continue|2 end end end - local.get $2 - local.get $3 + local.get $4 + local.get $5 i64.mul ) (func $~lib/math/ipow32 (param $0 i32) (result i32) @@ -5114,11 +4984,11 @@ (local $6 i64) (local $7 i32) (local $8 i64) - (local $9 i64) - (local $10 i64) + (local $9 i32) + (local $10 f64) (local $11 f64) - (local $12 f64) - (local $13 i32) + (local $12 i64) + (local $13 i64) (local $14 i64) block $folding-inner0 local.get $0 @@ -5134,7 +5004,7 @@ i32.load16_u local.set $5 f64.const 1 - local.set $12 + local.set $11 loop $while-continue|0 local.get $7 if (result i32) @@ -5231,7 +5101,7 @@ i32.eqz br_if $folding-inner0 f64.const -1 - local.set $12 + local.set $11 local.get $0 i32.const 2 i32.add @@ -5260,11 +5130,10 @@ local.tee $5 i32.const 73 i32.eq - i32.const 0 local.get $7 i32.const 8 i32.ge_s - select + i32.and if local.get $0 i64.load @@ -5279,7 +5148,7 @@ i32.const 0 end if - local.get $12 + local.get $11 f64.const inf f64.mul return @@ -5287,18 +5156,17 @@ br $folding-inner0 end local.get $5 + i32.const 46 + i32.ne + local.get $5 i32.const 48 i32.sub i32.const 10 i32.ge_u - i32.const 0 - local.get $5 - i32.const 46 - i32.ne - select + i32.and br_if $folding-inner0 local.get $0 - local.set $2 + local.set $4 loop $while-continue|1 local.get $5 i32.const 48 @@ -5329,15 +5197,15 @@ i32.eq if local.get $0 - local.get $2 + local.get $4 i32.eq - local.set $2 + local.set $4 local.get $0 i32.const 2 i32.add local.set $0 i32.const 0 - local.get $2 + local.get $4 local.get $7 i32.const 1 i32.sub @@ -5345,7 +5213,7 @@ select br_if $folding-inner0 i32.const 1 - local.set $13 + local.set $9 loop $for-loop|2 local.get $0 i32.load16_u @@ -5357,10 +5225,10 @@ i32.const 1 i32.sub local.set $7 - local.get $3 + local.get $2 i32.const 1 i32.sub - local.set $3 + local.set $2 local.get $0 i32.const 2 i32.add @@ -5382,8 +5250,8 @@ i32.ge_u i32.const 0 i32.const 0 + local.get $4 local.get $2 - local.get $3 select select br_if $folding-inner0 @@ -5391,23 +5259,21 @@ local.get $5 i32.const 48 i32.sub - local.set $2 + local.set $4 loop $for-loop|3 - i32.const 0 - local.get $13 - i32.const 1 + local.get $9 + i32.eqz local.get $5 i32.const 46 i32.eq - select - local.get $2 + i32.and + local.get $4 i32.const 10 i32.lt_u - select - i32.eqz + i32.or if block $for-break3 - local.get $2 + local.get $4 i32.const 10 i32.lt_u if @@ -5415,14 +5281,14 @@ i32.const 19 i32.lt_s if (result i64) - local.get $2 + local.get $4 i64.extend_i32_u local.get $6 i64.const 10 i64.mul i64.add else - local.get $2 + local.get $4 i32.eqz i32.eqz i64.extend_i32_u @@ -5436,9 +5302,9 @@ local.set $1 else local.get $1 - local.set $3 + local.set $2 i32.const 1 - local.set $13 + local.set $9 end local.get $7 i32.const 1 @@ -5454,17 +5320,15 @@ local.tee $5 i32.const 48 i32.sub - local.set $2 + local.set $4 br $for-loop|3 end end end block $~lib/util/string/scientific|inlined.0 (result f64) - f64.const 0 - i32.const 1 - local.get $3 + local.get $2 local.get $1 - local.get $13 + local.get $9 select i32.const 19 local.get $1 @@ -5473,6 +5337,10 @@ i32.gt_s select i32.sub + local.set $5 + f64.const 0 + local.get $6 + i64.eqz block $~lib/util/string/parseExp|inlined.0 (result i32) i32.const 1 local.set $1 @@ -5489,7 +5357,7 @@ local.get $7 i32.const 1 i32.sub - local.tee $2 + local.tee $4 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop @@ -5498,15 +5366,15 @@ i32.add local.tee $0 i32.load16_u - local.tee $3 + local.tee $2 i32.const 45 i32.eq if (result i32) i32.const 0 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.tee $2 + local.tee $4 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop @@ -5518,15 +5386,15 @@ local.tee $0 i32.load16_u else - local.get $3 + local.get $2 i32.const 43 i32.eq if (result i32) i32.const 0 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.tee $2 + local.tee $4 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop @@ -5536,20 +5404,20 @@ local.tee $0 i32.load16_u else - local.get $3 + local.get $2 end end - local.set $3 + local.set $2 loop $while-continue|4 - local.get $3 + local.get $2 i32.const 48 i32.eq if i32.const 0 - local.get $2 + local.get $4 i32.const 1 i32.sub - local.tee $2 + local.tee $4 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop @@ -5558,40 +5426,40 @@ i32.add local.tee $0 i32.load16_u - local.set $3 + local.set $2 br $while-continue|4 end end - local.get $3 + local.get $2 i32.const 48 i32.sub - local.set $3 + local.set $2 loop $for-loop|5 - local.get $3 + local.get $2 i32.const 10 i32.lt_u i32.const 0 - local.get $2 + local.get $4 select if local.get $1 i32.const 3200 i32.mul - local.get $4 + local.get $3 i32.const 3200 i32.ge_s br_if $~lib/util/string/parseExp|inlined.0 drop + local.get $2 local.get $3 - local.get $4 i32.const 10 i32.mul i32.add - local.set $4 - local.get $2 + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $2 + local.set $4 local.get $0 i32.const 2 i32.add @@ -5599,21 +5467,20 @@ i32.load16_u i32.const 48 i32.sub - local.set $3 + local.set $2 br $for-loop|5 end end local.get $1 - local.get $4 + local.get $3 i32.mul end + local.get $5 i32.add local.tee $0 i32.const -342 i32.lt_s - local.get $6 - i64.eqz - select + i32.or br_if $~lib/util/string/scientific|inlined.0 drop f64.const inf @@ -5624,7 +5491,7 @@ drop local.get $6 f64.convert_i64_u - local.tee $11 + local.tee $10 local.get $0 i32.eqz br_if $~lib/util/string/scientific|inlined.0 @@ -5632,13 +5499,12 @@ local.get $0 i32.const 37 i32.le_s - i32.const 0 local.get $0 i32.const 22 i32.gt_s - select + i32.and if - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.shl @@ -5646,7 +5512,7 @@ i32.add f64.load f64.mul - local.set $11 + local.set $10 i32.const 22 local.set $0 end @@ -5654,13 +5520,13 @@ i64.const 9007199254740991 i64.le_u if (result i32) - local.get $0 local.get $0 i32.const 31 i32.shr_s - local.tee $5 + local.tee $1 + local.get $0 + local.get $1 i32.add - local.get $5 i32.xor i32.const 22 i32.le_s @@ -5672,7 +5538,7 @@ i32.const 0 i32.gt_s if - local.get $11 + local.get $10 local.get $0 i32.const 3 i32.shl @@ -5682,7 +5548,7 @@ f64.mul br $~lib/util/string/scientific|inlined.0 end - local.get $11 + local.get $10 i32.const 0 local.get $0 i32.sub @@ -5722,7 +5588,7 @@ i64.div_u local.tee $6 i64.clz - local.tee $9 + local.tee $12 i64.const 18 i64.sub i64.shl @@ -5732,12 +5598,12 @@ f64.nearest i64.trunc_f64_u local.get $6 - local.get $9 + local.get $12 i64.shl i64.add local.set $6 local.get $8 - local.get $9 + local.get $12 i64.sub local.set $8 local.get $1 @@ -5753,32 +5619,32 @@ i32.sub call $~lib/math/ipow32 i64.extend_i32_s - local.tee $10 + local.tee $13 i64.div_u local.tee $14 i64.clz - local.set $9 + local.set $12 local.get $6 - local.get $10 + local.get $13 i64.rem_u f64.convert_i64_u i64.reinterpret_f64 - local.get $9 + local.get $12 i64.const 52 i64.shl i64.add f64.reinterpret_i64 - local.get $10 + local.get $13 f64.convert_i64_u f64.div i64.trunc_f64_u local.get $14 - local.get $9 + local.get $12 i64.shl i64.add f64.convert_i64_u local.get $8 - local.get $9 + local.get $12 i64.sub i32.wrap_i64 call $~lib/math/NativeMath.scalbn @@ -5790,13 +5656,13 @@ i64.shr_u local.set $6 local.get $0 - local.tee $4 + local.tee $3 i64.extend_i32_s local.get $8 i64.add global.set $~lib/util/string/__fixmulShift loop $for-loop|7 - local.get $4 + local.get $3 i32.const 13 i32.ge_s if @@ -5815,88 +5681,88 @@ i64.const 32 i64.shr_u i64.add - local.tee $9 + local.tee $8 i64.const 32 i64.shr_u i32.wrap_i64 i32.clz i64.extend_i32_u - local.tee $8 + local.tee $12 i64.sub - local.tee $10 + local.tee $13 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift local.get $6 - local.get $8 + local.get $12 i64.shl i64.const 31 i64.shr_u i64.const 1 i64.and - local.get $9 local.get $8 + local.get $12 i64.shl local.get $6 i64.const 4294967295 i64.and - local.get $10 + local.get $13 i64.shr_u i64.or i64.add local.set $6 - local.get $4 + local.get $3 i32.const 13 i32.sub - local.set $4 + local.set $3 br $for-loop|7 end end - local.get $4 + local.get $3 call $~lib/math/ipow32 i64.extend_i32_u - local.tee $9 + local.tee $8 local.get $6 i64.const 4294967295 i64.and i64.mul - local.set $8 + local.set $12 i64.const 32 - local.get $9 + local.get $8 local.get $6 i64.const 32 i64.shr_u i64.mul - local.get $8 + local.get $12 i64.const 32 i64.shr_u i64.add - local.tee $9 + local.tee $6 i64.const 32 i64.shr_u i32.wrap_i64 i32.clz i64.extend_i32_u - local.tee $6 + local.tee $8 i64.sub - local.tee $10 + local.tee $13 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift + local.get $12 local.get $8 - local.get $6 i64.shl i64.const 31 i64.shr_u i64.const 1 i64.and - local.get $9 local.get $6 - i64.shl local.get $8 + i64.shl + local.get $12 i64.const 4294967295 i64.and - local.get $10 + local.get $13 i64.shr_u i64.or i64.add @@ -5907,7 +5773,7 @@ end end end - local.get $12 + local.get $11 f64.copysign return end @@ -6008,14 +5874,14 @@ local.get $2 local.get $3 i32.gt_s - local.tee $1 + local.tee $0 select call $~lib/util/string/compareImpl - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s - local.get $1 local.get $0 + local.get $1 select ) (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) @@ -6024,7 +5890,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -6033,28 +5899,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (local $2 i32) @@ -6063,21 +5929,23 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 + local.tee $2 i32.load offset=12 - local.tee $5 + local.tee $3 i32.const 1 i32.add - local.tee $6 - local.tee $2 - local.get $0 - i32.load offset=8 local.tee $4 + local.tee $7 + local.get $2 + i32.load offset=8 + local.tee $5 i32.const 2 i32.shr_u i32.gt_u if - local.get $2 + local.get $7 i32.const 268435455 i32.gt_u if @@ -6088,74 +5956,80 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.load - local.tee $7 - local.get $4 + local.tee $6 + local.get $5 i32.const 1 i32.shl - local.tee $3 + local.tee $8 i32.const 1073741820 - local.get $3 + local.get $8 i32.const 1073741820 i32.lt_u select - local.tee $3 - local.get $2 + local.tee $8 + local.get $7 i32.const 8 - local.get $2 + local.get $7 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $2 - local.get $2 - local.get $3 + local.tee $7 + local.get $7 + local.get $8 i32.lt_u select - local.tee $2 + local.tee $7 call $~lib/rt/itcms/__renew - local.tee $3 - local.get $4 + local.tee $8 + local.get $5 i32.add - local.get $2 - local.get $4 + local.get $7 + local.get $5 i32.sub call $~lib/memory/memory.fill - local.get $3 - local.get $7 + local.get $6 + local.get $8 i32.ne if - local.get $0 - local.get $3 + local.get $2 + local.get $8 i32.store - local.get $0 - local.get $3 + local.get $2 + local.get $8 i32.store offset=4 - local.get $0 - local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + local.get $8 + if + local.get $2 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end end - local.get $0 local.get $2 + local.get $7 i32.store offset=8 end local.get $0 i32.load offset=4 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add local.get $1 i32.store - local.get $0 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $6 + local.get $4 i32.store offset=12 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) @@ -6288,7 +6162,7 @@ local.get $1 local.get $5 i64.div_u - local.tee $4 + local.tee $1 i64.mul i64.sub i32.wrap_i64 @@ -6298,8 +6172,7 @@ i32.add i32.load16_u i32.store16 - local.get $4 - local.tee $1 + local.get $1 i64.const 0 i64.ne br_if $do-loop|1 @@ -6465,8 +6338,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -6689,22 +6561,20 @@ i32.shl i32.const 22862 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -6718,7 +6588,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -6734,7 +6604,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -6814,22 +6684,20 @@ i32.shl i32.const 22862 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -6843,7 +6711,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -6859,16 +6727,13 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -6887,18 +6752,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -6915,27 +6779,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -6957,19 +6820,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -6986,7 +6848,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -7004,7 +6866,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -7015,24 +6877,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -7078,20 +6939,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -7114,20 +6972,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -7135,63 +6992,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -7208,22 +7062,21 @@ (local $1 i64) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) - (local $15 i64) local.get $0 f64.const 0 f64.lt - local.tee $5 + local.tee $2 if (result f64) i32.const 22864 i32.const 45 @@ -7240,19 +7093,19 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $6 i32.const 1 - local.get $2 + local.get $6 select i32.const 1075 i32.sub - local.tee $9 + local.tee $7 i32.const 1 i32.sub local.get $1 i64.const 4503599627370495 i64.and - local.get $2 + local.get $6 i32.const 0 i32.ne i64.extend_i32_u @@ -7267,11 +7120,11 @@ local.tee $3 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $6 i32.sub - local.set $2 + local.set $8 local.get $3 - local.get $4 + local.get $6 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -7281,25 +7134,25 @@ i64.eq i32.const 1 i32.add - local.tee $4 + local.tee $6 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 - local.get $4 + local.get $7 + local.get $6 i32.sub - local.get $2 + local.get $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $2 + local.get $8 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $6 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -7308,9 +7161,9 @@ f64.add local.tee $0 i32.trunc_f64_s - local.tee $2 + local.tee $7 local.get $0 - local.get $2 + local.get $7 f64.convert_i32_s f64.ne i32.add @@ -7318,18 +7171,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $7 i32.const 3 i32.shl - local.tee $4 + local.tee $8 i32.sub global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 22920 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $2 + local.get $7 i32.const 1 i32.shl i32.const 23616 @@ -7347,77 +7200,77 @@ local.get $1 i64.const 32 i64.shr_u - local.tee $10 + local.tee $9 global.get $~lib/util/number/_frc_pow - local.tee $13 + local.tee $10 i64.const 4294967295 i64.and + local.tee $11 local.tee $1 - local.tee $6 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul i64.const 32 i64.shr_u i64.add - local.set $6 + local.set $4 global.get $~lib/util/number/_frc_plus - local.tee $7 + local.tee $1 i64.const 4294967295 i64.and - local.set $11 - local.get $7 + local.set $12 + local.get $1 i64.const 32 i64.shr_u - local.tee $14 - local.get $1 + local.tee $1 + local.get $11 i64.mul - local.get $1 local.get $11 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add - local.set $7 + local.set $5 global.get $~lib/util/number/_frc_minus - local.tee $8 + local.tee $13 i64.const 4294967295 i64.and - local.set $12 - local.get $8 + local.set $14 + local.get $13 i64.const 32 i64.shr_u - local.tee $15 - local.get $1 + local.tee $13 + local.get $11 i64.mul - local.get $1 - local.get $12 + local.get $11 + local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $8 - local.get $5 + local.set $11 + local.get $2 i32.const 1 i32.shl i32.const 22864 i32.add + local.get $9 local.get $10 - local.get $13 i64.const 32 i64.shr_u - local.tee $1 + local.tee $9 local.tee $10 i64.mul - local.get $6 + local.get $4 i64.const 32 i64.shr_u i64.add local.get $3 local.get $10 i64.mul - local.get $6 + local.get $4 i64.const 4294967295 i64.and i64.add @@ -7427,16 +7280,16 @@ i64.shr_u i64.add local.get $1 - local.get $14 + local.get $9 i64.mul - local.get $7 + local.get $5 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $11 + local.get $9 + local.get $12 i64.mul - local.get $7 + local.get $5 i64.const 4294967295 i64.and i64.add @@ -7447,24 +7300,24 @@ i64.add i64.const 1 i64.sub - local.tee $3 + local.tee $1 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $6 i32.add i32.const -64 i32.sub - local.get $3 local.get $1 - local.get $15 + local.get $9 + local.get $13 i64.mul - local.get $8 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $12 + local.get $9 + local.get $14 i64.mul - local.get $8 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -7476,13 +7329,13 @@ i64.const 1 i64.add i64.sub - local.get $5 + local.get $2 call $~lib/util/number/genDigits - local.get $5 + local.get $2 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $5 + local.get $2 i32.add ) (func $std/string/getString (result i32) @@ -7492,71 +7345,67 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $invalid - block $~lib/array/Array<~lib/string/String> - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array<~lib/string/String> $invalid - end - return + block $folding-inner0 + block $invalid + block $~lib/array/Array<~lib/string/String> + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array<~lib/string/String> $invalid end return end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end return end local.get $0 - i32.load - call $~lib/rt/itcms/__visit - return - end - local.get $0 - local.tee $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - if + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - i32.load - local.tee $0 + i32.lt_u if - local.get $0 - call $~lib/rt/itcms/__visit + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return end - local.get $1 - i32.load - call $~lib/rt/itcms/__visit - return + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start call $start:std/string @@ -7570,302 +7419,315 @@ (local $8 i32) (local $9 i32) (local $10 i32) - block $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 25884 - i32.lt_s - if - i32.const 42288 - i32.const 42336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i64.const 0 - i64.store - local.get $3 - i64.const 0 - i64.store offset=8 - local.get $3 - i64.const 0 - i64.store offset=16 - block $folding-inner3 - block $folding-inner1 - block $folding-inner0 - local.get $2 - i32.eqz - br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i64.const 0 + i64.store offset=8 + local.get $6 + i64.const 0 + i64.store offset=16 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.eqz + br_if $folding-inner0 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.eqz + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $0 + i32.store + local.get $0 if - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $1 - i32.load offset=4 - local.get $0 - i32.store local.get $1 local.get $0 i32.const 1 - call $~lib/rt/itcms/__link - br $folding-inner3 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $8 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $8 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $9 + if + local.get $8 + i32.eqz if - local.get $3 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 1 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.tee $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - i32.const 1712 - i32.store - br $folding-inner1 - end - else - local.get $3 - i32.eqz - br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 - local.get $3 - local.get $7 - i32.lt_s - select - local.tee $4 + i32.const 1 i32.const 4 i32.const 0 call $~lib/rt/__newArray - local.tee $1 - i32.store - local.get $1 + local.tee $0 + i32.store offset=4 + local.get $0 i32.load offset=4 - local.set $3 - loop $for-loop|0 - local.get $4 - local.get $5 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 2 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - local.get $2 - local.get $5 - i32.const 1 - i32.shl - local.get $0 - i32.add - i32.load16_u - i32.store16 - local.get $5 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.get $2 - i32.store - local.get $1 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - br $folding-inner3 + i32.const 1712 + i32.store + br $folding-inner1 end + else + local.get $8 + i32.eqz + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 + local.get $8 + local.get $2 + local.get $2 + local.get $8 + i32.gt_s + select + local.tee $1 i32.const 4 i32.const 0 call $~lib/rt/__newArray local.tee $2 - i32.store offset=12 - loop $while-continue|1 - local.get $0 + i32.store + local.get $2 + i32.load offset=4 + local.set $4 + loop $for-loop|0 local.get $1 - local.get $4 - call $~lib/string/String#indexOf - local.tee $5 - i32.const -1 - i32.xor + local.get $3 + i32.gt_s if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 local.get $5 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.load16_u + i32.store16 + local.get $3 + i32.const 2 + i32.shl local.get $4 - i32.sub - local.tee $6 - i32.const 0 - i32.gt_s + i32.add + local.get $5 + i32.store + local.get $5 if - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 1 - i32.shl - local.tee $9 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=16 - local.get $6 - local.get $4 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $9 - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=20 local.get $2 - i32.const 1712 - call $~lib/array/Array<~lib/string/String>#push + local.get $5 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $10 + local.get $3 i32.const 1 i32.add - local.tee $10 - local.get $7 - i32.eq - br_if $folding-inner4 - local.get $5 - local.get $8 - i32.add - local.set $4 - br $while-continue|1 + local.set $3 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=12 + loop $while-continue|1 + local.get $0 + local.get $1 local.get $4 - i32.eqz - if - local.get $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - br $folding-inner4 - end - local.get $3 - local.get $4 - i32.sub - local.tee $1 - i32.const 0 - i32.gt_s + call $~lib/string/String#indexOf + local.tee $6 + i32.const -1 + i32.xor if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store offset=4 - local.get $1 + local.get $6 local.get $4 + i32.sub + local.tee $7 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + i32.shl + local.tee $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=16 + local.get $7 + local.get $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $10 + call $~lib/memory/memory.copy + local.get $3 + local.get $7 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=20 + local.get $3 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push + end + local.get $2 + local.get $5 i32.const 1 - i32.shl - local.get $0 i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - local.get $1 - call $~lib/array/Array<~lib/string/String>#push - else - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=20 - local.get $2 - i32.const 1712 - call $~lib/array/Array<~lib/string/String>#push + local.tee $5 + i32.eq + br_if $folding-inner2 + local.get $6 + local.get $9 + i32.add + local.set $4 + br $while-continue|1 end - br $folding-inner4 end + local.get $4 + i32.eqz + if + local.get $3 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner2 + end + local.get $8 + local.get $4 + i32.sub + local.tee $1 i32.const 0 - i32.const 4 - i32.const 0 - call $~lib/rt/__newArray - local.set $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + call $~lib/memory/memory.copy + local.get $3 + local.get $2 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=20 + local.get $3 + i32.const 1712 + call $~lib/array/Array<~lib/string/String>#push + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return + i32.const 0 + i32.const 4 + i32.const 0 + call $~lib/rt/__newArray + local.set $0 end global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 return end global.get $~lib/memory/__stack_pointer i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $start:std/string (local $0 i32) - (local $1 i32) - (local $2 f64) + (local $1 f64) + (local $2 f32) (local $3 i32) (local $4 i32) - (local $5 f32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 44 i32.sub @@ -8016,12 +7878,11 @@ end global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $0 i32.store - i32.const -1 - local.set $0 - block $__inlined_func$~lib/string/String#codePointAt - local.get $1 + block $__inlined_func$~lib/string/String#codePointAt (result i32) + i32.const -1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -8031,37 +7892,40 @@ i32.const 1 i32.le_u br_if $__inlined_func$~lib/string/String#codePointAt - i32.const 1 + drop local.get $3 i32.const 2 i32.eq - local.get $1 + local.get $0 i32.load16_u offset=2 - local.tee $0 + local.tee $3 i32.const 64512 i32.and i32.const 55296 i32.ne - select - br_if $__inlined_func$~lib/string/String#codePointAt - local.get $1 + i32.or + if + local.get $3 + br $__inlined_func$~lib/string/String#codePointAt + end + local.get $3 + local.get $0 i32.load16_u offset=4 - local.tee $1 + local.tee $0 i32.const 64512 i32.and i32.const 56320 i32.ne br_if $__inlined_func$~lib/string/String#codePointAt - local.get $1 + drop local.get $0 + local.get $3 i32.const 10 i32.shl i32.add i32.const 56613888 i32.sub - local.set $0 end - local.get $0 i32.const 105 i32.ne if @@ -8117,17 +7981,17 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 - local.get $1 + local.get $3 i32.const 15 call $~lib/string/String#charAt - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8151,14 +8015,14 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $3 + local.tee $4 i32.store offset=12 - local.get $1 local.get $3 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -8167,12 +8031,12 @@ i32.const 1 i32.sub call $~lib/string/String#charAt - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8184,16 +8048,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $3 i32.store offset=8 - local.get $1 local.get $0 + local.get $3 i32.store offset=12 - local.get $0 + local.get $3 i32.const 0 - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -8273,10 +8137,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1776 i32.store offset=4 local.get $0 @@ -8297,10 +8161,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1840 i32.store offset=4 local.get $0 @@ -8321,10 +8185,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1872 i32.store offset=4 local.get $0 @@ -8345,10 +8209,10 @@ call $~lib/string/String.fromCharCode@varargs local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1872 i32.store offset=4 local.get $0 @@ -8368,10 +8232,10 @@ call $~lib/string/String.fromCharCode local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1904 i32.store offset=4 local.get $0 @@ -8477,10 +8341,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1776 i32.store offset=4 local.get $0 @@ -8499,10 +8363,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1872 i32.store offset=4 local.get $0 @@ -8521,10 +8385,10 @@ call $~lib/string/String.fromCodePoint local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 2144 i32.store offset=4 local.get $0 @@ -8540,41 +8404,47 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $3 i32.store - local.get $1 + local.get $0 i32.const 2176 i32.store offset=4 - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $3 - select - local.tee $4 - i32.const 2172 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - i32.add - local.get $3 - i32.gt_s - if (result i32) + block $__inlined_func$~lib/string/String#startsWith (result i32) + i32.const 0 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - else + i32.shr_u + local.tee $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $4 + i32.const 0 local.get $0 local.get $4 + i32.const 2172 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + i32.add + i32.lt_s + br_if $__inlined_func$~lib/string/String#startsWith + drop + local.get $3 + local.get $4 i32.const 2176 - local.get $1 + local.get $0 call $~lib/util/string/compareImpl + i32.eqz end + i32.eqz if i32.const 0 i32.const 1120 @@ -8584,41 +8454,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $3 i32.store - local.get $1 + local.get $0 i32.const 2208 i32.store offset=4 i32.const 536870910 - local.get $0 + local.get $3 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 536870910 - i32.gt_u + i32.gt_s select i32.const 2204 i32.load i32.const 1 i32.shr_u - local.tee $1 + local.tee $0 i32.sub - local.tee $3 + local.tee $4 i32.const 0 i32.lt_s if (result i32) i32.const 1 else - local.get $0 local.get $3 + local.get $4 i32.const 2208 - local.get $1 + local.get $0 call $~lib/util/string/compareImpl end if @@ -8632,12 +8502,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2240 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2240 i32.const 0 call $~lib/string/String#indexOf @@ -8654,12 +8524,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 i32.const 2272 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.const 2272 call $~lib/string/String#padStart @@ -8669,10 +8539,10 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8686,12 +8556,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 i32.const 2272 i32.store offset=16 - local.get $1 + local.get $3 i32.const 15 i32.const 2272 call $~lib/string/String#padStart @@ -8701,10 +8571,10 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8898,12 +8768,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 i32.const 2272 i32.store offset=16 - local.get $1 + local.get $3 i32.const 0 i32.const 2272 call $~lib/string/String#padEnd @@ -8913,10 +8783,10 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -8930,12 +8800,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=8 local.get $0 i32.const 2272 i32.store offset=16 - local.get $1 + local.get $3 i32.const 15 i32.const 2272 call $~lib/string/String#padEnd @@ -8945,10 +8815,10 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $3 call $~lib/string/String.__eq i32.eqz if @@ -9199,15 +9069,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - global.get $std/string/str local.tee $0 + global.get $std/string/str + local.tee $3 i32.store - local.get $1 local.get $0 + local.get $3 i32.store offset=4 - local.get $0 - local.get $0 + local.get $3 + local.get $3 i32.const 0 call $~lib/string/String#indexOf if @@ -9221,12 +9091,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 1712 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1712 i32.const 0 call $~lib/string/String#indexOf @@ -9241,12 +9111,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 0 call $~lib/string/String#indexOf @@ -9263,12 +9133,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2656 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2656 i32.const 0 call $~lib/string/String#indexOf @@ -9285,12 +9155,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 2 call $~lib/string/String#indexOf @@ -9307,12 +9177,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 3 call $~lib/string/String#indexOf @@ -9329,12 +9199,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2688 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2688 i32.const -1 call $~lib/string/String#indexOf @@ -9391,21 +9261,21 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 1712 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1712 i32.const 2147483647 call $~lib/string/String#lastIndexOf local.set $0 global.get $~lib/memory/__stack_pointer global.get $std/string/str - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 20 i32.sub i32.load offset=16 @@ -9424,12 +9294,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -9446,12 +9316,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2656 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2656 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -9468,12 +9338,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2720 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2720 i32.const 2147483647 call $~lib/string/String#lastIndexOf @@ -9490,12 +9360,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 2 call $~lib/string/String#lastIndexOf @@ -9512,12 +9382,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2624 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2624 i32.const 3 call $~lib/string/String#lastIndexOf @@ -9534,12 +9404,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2688 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2688 i32.const -1 call $~lib/string/String#lastIndexOf @@ -9556,12 +9426,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2752 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2752 i32.const 0 call $~lib/string/String#lastIndexOf @@ -9578,12 +9448,12 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $std/string/str - local.tee $1 + local.tee $3 i32.store local.get $0 i32.const 2176 i32.store offset=4 - local.get $1 + local.get $3 i32.const 2176 i32.const 0 call $~lib/string/String#lastIndexOf @@ -10335,14 +10205,14 @@ i32.const 3664 i32.const 0 call $~lib/util/string/strtol - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 3712 i32.store i32.const 3712 i32.const 16 call $~lib/util/string/strtol - local.get $2 + local.get $1 f64.ne if i32.const 0 @@ -10486,8 +10356,8 @@ i32.const 1712 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10503,8 +10373,8 @@ i32.const 4112 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10520,8 +10390,8 @@ i32.const 4144 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10537,8 +10407,8 @@ i32.const 2400 i32.const 37 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10554,8 +10424,8 @@ i32.const 4176 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10571,8 +10441,8 @@ i32.const 4208 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10589,8 +10459,8 @@ i32.const 0 call $~lib/util/string/strtol f32.demote_f64 - local.tee $5 - local.get $5 + local.tee $2 + local.get $2 f32.eq if i32.const 0 @@ -10606,8 +10476,8 @@ i32.const 4208 i32.const 0 call $~lib/util/string/strtol - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -10935,8 +10805,8 @@ i32.store i32.const 1712 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11760,9 +11630,9 @@ i32.const 4144 i32.store i32.const 4144 - call $~lib/util/string/strtod - local.tee $2 - local.get $2 + call $~lib/util/string/strtod + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11777,8 +11647,8 @@ i32.store i32.const 4112 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11793,8 +11663,8 @@ i32.store i32.const 7056 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11809,8 +11679,8 @@ i32.store i32.const 7088 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11825,8 +11695,8 @@ i32.store i32.const 7120 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11841,8 +11711,8 @@ i32.store i32.const 7152 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11857,8 +11727,8 @@ i32.store i32.const 7184 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11873,8 +11743,8 @@ i32.store i32.const 7216 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11889,8 +11759,8 @@ i32.store i32.const 7248 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11905,8 +11775,8 @@ i32.store i32.const 7280 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11921,8 +11791,8 @@ i32.store i32.const 7312 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11937,8 +11807,8 @@ i32.store i32.const 7344 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11953,8 +11823,8 @@ i32.store i32.const 7376 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11969,8 +11839,8 @@ i32.store i32.const 7408 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -11985,8 +11855,8 @@ i32.store i32.const 7440 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12001,8 +11871,8 @@ i32.store i32.const 7472 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12392,8 +12262,8 @@ i32.store i32.const 8688 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12408,8 +12278,8 @@ i32.store i32.const 8720 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12424,8 +12294,8 @@ i32.store i32.const 8768 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -12901,8 +12771,8 @@ i32.store i32.const 12880 call $~lib/util/string/strtod - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 f64.eq if i32.const 0 @@ -13838,18 +13708,18 @@ global.get $~lib/memory/__stack_pointer i32.const 55296 call $~lib/string/String.fromCodePoint - local.set $0 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.store i32.const 56322 call $~lib/string/String.fromCodePoint - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 + local.get $5 local.get $0 - local.get $1 call $~lib/string/String#concat local.tee $0 i32.store offset=40 @@ -16112,10 +15982,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1712 i32.store offset=4 local.get $0 @@ -16181,10 +16051,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1712 i32.store offset=4 local.get $0 @@ -16226,10 +16096,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 15424 i32.store offset=4 local.get $0 @@ -16269,15 +16139,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16287,15 +16157,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16307,10 +16177,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16350,15 +16220,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16368,15 +16238,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16388,10 +16258,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16431,15 +16301,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16449,15 +16319,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16467,15 +16337,15 @@ local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1712 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1712 call $~lib/string/String.__eq else @@ -16487,10 +16357,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16530,15 +16400,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1712 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1712 call $~lib/string/String.__eq else @@ -16548,15 +16418,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16566,15 +16436,15 @@ local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16586,10 +16456,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16629,15 +16499,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16647,15 +16517,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16665,15 +16535,15 @@ local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 14048 i32.store offset=4 - local.get $1 + local.get $3 i32.const 14048 call $~lib/string/String.__eq else @@ -16685,10 +16555,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1712 i32.store offset=4 local.get $0 @@ -16728,15 +16598,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16746,15 +16616,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16766,10 +16636,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -16835,10 +16705,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1808 i32.store offset=4 local.get $0 @@ -16880,10 +16750,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 1808 i32.store offset=4 local.get $0 @@ -16923,15 +16793,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -16941,15 +16811,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -16961,10 +16831,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -17004,15 +16874,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -17022,15 +16892,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -17042,10 +16912,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -17085,15 +16955,15 @@ local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 1808 i32.store offset=4 - local.get $1 + local.get $3 i32.const 1808 call $~lib/string/String.__eq else @@ -17103,15 +16973,15 @@ local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 - i32.store + local.tee $4 local.get $3 + i32.store + local.get $4 i32.const 12944 i32.store offset=4 - local.get $1 + local.get $3 i32.const 12944 call $~lib/string/String.__eq else @@ -17123,10 +16993,10 @@ call $~lib/array/Array<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -17149,10 +17019,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -17172,10 +17042,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -17195,10 +17065,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17376 i32.store offset=4 local.get $0 @@ -17218,10 +17088,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17408 i32.store offset=4 local.get $0 @@ -17241,10 +17111,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 2400 i32.store offset=4 local.get $0 @@ -17264,10 +17134,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17440 i32.store offset=4 local.get $0 @@ -17287,10 +17157,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13584 i32.store offset=4 local.get $0 @@ -17310,10 +17180,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17472 i32.store offset=4 local.get $0 @@ -17333,10 +17203,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17504 i32.store offset=4 local.get $0 @@ -17356,10 +17226,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17536 i32.store offset=4 local.get $0 @@ -17379,10 +17249,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17584 i32.store offset=4 local.get $0 @@ -17402,10 +17272,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17632 i32.store offset=4 local.get $0 @@ -17425,10 +17295,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17680 i32.store offset=4 local.get $0 @@ -17448,10 +17318,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17728 i32.store offset=4 local.get $0 @@ -17471,10 +17341,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17776 i32.store offset=4 local.get $0 @@ -17494,10 +17364,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17824 i32.store offset=4 local.get $0 @@ -17517,10 +17387,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17872 i32.store offset=4 local.get $0 @@ -17540,10 +17410,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -17563,10 +17433,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17904 i32.store offset=4 local.get $0 @@ -17586,10 +17456,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17776 i32.store offset=4 local.get $0 @@ -17609,10 +17479,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17936 i32.store offset=4 local.get $0 @@ -17632,10 +17502,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17984 i32.store offset=4 local.get $0 @@ -17655,10 +17525,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -17678,10 +17548,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -17701,10 +17571,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17376 i32.store offset=4 local.get $0 @@ -17724,10 +17594,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -17747,10 +17617,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18032 i32.store offset=4 local.get $0 @@ -17770,10 +17640,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18064 i32.store offset=4 local.get $0 @@ -17793,10 +17663,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18096 i32.store offset=4 local.get $0 @@ -17816,10 +17686,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18128 i32.store offset=4 local.get $0 @@ -17839,10 +17709,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18160 i32.store offset=4 local.get $0 @@ -17862,10 +17732,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18192 i32.store offset=4 local.get $0 @@ -17885,10 +17755,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18224 i32.store offset=4 local.get $0 @@ -17908,10 +17778,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18256 i32.store offset=4 local.get $0 @@ -17931,10 +17801,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18304 i32.store offset=4 local.get $0 @@ -17954,10 +17824,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18352 i32.store offset=4 local.get $0 @@ -17977,10 +17847,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18400 i32.store offset=4 local.get $0 @@ -18000,10 +17870,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18448 i32.store offset=4 local.get $0 @@ -18023,10 +17893,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -18046,10 +17916,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17440 i32.store offset=4 local.get $0 @@ -18069,10 +17939,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18352 i32.store offset=4 local.get $0 @@ -18092,10 +17962,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18496 i32.store offset=4 local.get $0 @@ -18115,10 +17985,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18544 i32.store offset=4 local.get $0 @@ -18138,10 +18008,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18592 i32.store offset=4 local.get $0 @@ -18161,10 +18031,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18592 i32.store offset=4 local.get $0 @@ -18184,10 +18054,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -18207,10 +18077,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -18230,10 +18100,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13488 i32.store offset=4 local.get $0 @@ -18253,10 +18123,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18640 i32.store offset=4 local.get $0 @@ -18276,10 +18146,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18672 i32.store offset=4 local.get $0 @@ -18299,10 +18169,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18704 i32.store offset=4 local.get $0 @@ -18322,10 +18192,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18736 i32.store offset=4 local.get $0 @@ -18345,10 +18215,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18768 i32.store offset=4 local.get $0 @@ -18368,10 +18238,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18816 i32.store offset=4 local.get $0 @@ -18391,10 +18261,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18896 i32.store offset=4 local.get $0 @@ -18414,10 +18284,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18992 i32.store offset=4 local.get $0 @@ -18437,10 +18307,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19088 i32.store offset=4 local.get $0 @@ -18460,10 +18330,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19184 i32.store offset=4 local.get $0 @@ -18483,10 +18353,10 @@ call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19280 i32.store offset=4 local.get $0 @@ -18506,10 +18376,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19328 i32.store offset=4 local.get $0 @@ -18529,10 +18399,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19392 i32.store offset=4 local.get $0 @@ -18552,10 +18422,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19456 i32.store offset=4 local.get $0 @@ -18575,10 +18445,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19504 i32.store offset=4 local.get $0 @@ -18598,10 +18468,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19552 i32.store offset=4 local.get $0 @@ -18621,10 +18491,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19600 i32.store offset=4 local.get $0 @@ -18644,10 +18514,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19648 i32.store offset=4 local.get $0 @@ -18667,10 +18537,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19696 i32.store offset=4 local.get $0 @@ -18690,10 +18560,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19744 i32.store offset=4 local.get $0 @@ -18713,10 +18583,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19792 i32.store offset=4 local.get $0 @@ -18736,10 +18606,10 @@ call $~lib/util/number/utoa32 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19840 i32.store offset=4 local.get $0 @@ -18759,10 +18629,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -18782,10 +18652,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17408 i32.store offset=4 local.get $0 @@ -18805,10 +18675,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 2400 i32.store offset=4 local.get $0 @@ -18828,10 +18698,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 13584 i32.store offset=4 local.get $0 @@ -18851,10 +18721,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17472 i32.store offset=4 local.get $0 @@ -18874,10 +18744,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17504 i32.store offset=4 local.get $0 @@ -18897,10 +18767,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17584 i32.store offset=4 local.get $0 @@ -18920,10 +18790,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19888 i32.store offset=4 local.get $0 @@ -18943,10 +18813,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19936 i32.store offset=4 local.get $0 @@ -18966,10 +18836,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17984 i32.store offset=4 local.get $0 @@ -18989,10 +18859,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19984 i32.store offset=4 local.get $0 @@ -19012,10 +18882,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20032 i32.store offset=4 local.get $0 @@ -19035,10 +18905,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20080 i32.store offset=4 local.get $0 @@ -19058,10 +18928,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20128 i32.store offset=4 local.get $0 @@ -19081,10 +18951,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20176 i32.store offset=4 local.get $0 @@ -19104,10 +18974,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20224 i32.store offset=4 local.get $0 @@ -19127,10 +18997,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20288 i32.store offset=4 local.get $0 @@ -19150,10 +19020,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20352 i32.store offset=4 local.get $0 @@ -19173,10 +19043,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20416 i32.store offset=4 local.get $0 @@ -19196,10 +19066,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20480 i32.store offset=4 local.get $0 @@ -19219,10 +19089,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20544 i32.store offset=4 local.get $0 @@ -19242,10 +19112,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -19265,10 +19135,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20608 i32.store offset=4 local.get $0 @@ -19288,10 +19158,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 17984 i32.store offset=4 local.get $0 @@ -19311,10 +19181,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19984 i32.store offset=4 local.get $0 @@ -19334,10 +19204,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20640 i32.store offset=4 local.get $0 @@ -19357,10 +19227,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20032 i32.store offset=4 local.get $0 @@ -19380,10 +19250,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20688 i32.store offset=4 local.get $0 @@ -19403,10 +19273,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20736 i32.store offset=4 local.get $0 @@ -19426,10 +19296,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20784 i32.store offset=4 local.get $0 @@ -19449,10 +19319,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20848 i32.store offset=4 local.get $0 @@ -19472,10 +19342,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20912 i32.store offset=4 local.get $0 @@ -19495,10 +19365,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 20976 i32.store offset=4 local.get $0 @@ -19518,10 +19388,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -19541,10 +19411,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -19564,10 +19434,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 14048 i32.store offset=4 local.get $0 @@ -19587,10 +19457,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18064 i32.store offset=4 local.get $0 @@ -19610,10 +19480,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18160 i32.store offset=4 local.get $0 @@ -19633,10 +19503,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21040 i32.store offset=4 local.get $0 @@ -19656,10 +19526,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21088 i32.store offset=4 local.get $0 @@ -19679,10 +19549,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21136 i32.store offset=4 local.get $0 @@ -19702,10 +19572,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21184 i32.store offset=4 local.get $0 @@ -19725,10 +19595,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21232 i32.store offset=4 local.get $0 @@ -19748,10 +19618,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21280 i32.store offset=4 local.get $0 @@ -19771,10 +19641,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21344 i32.store offset=4 local.get $0 @@ -19794,10 +19664,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21408 i32.store offset=4 local.get $0 @@ -19817,10 +19687,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21472 i32.store offset=4 local.get $0 @@ -19840,10 +19710,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21536 i32.store offset=4 local.get $0 @@ -19863,10 +19733,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21600 i32.store offset=4 local.get $0 @@ -19886,10 +19756,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21600 i32.store offset=4 local.get $0 @@ -19909,10 +19779,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3056 i32.store offset=4 local.get $0 @@ -19932,10 +19802,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 3120 i32.store offset=4 local.get $0 @@ -19955,10 +19825,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18640 i32.store offset=4 local.get $0 @@ -19978,10 +19848,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18672 i32.store offset=4 local.get $0 @@ -20001,10 +19871,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18736 i32.store offset=4 local.get $0 @@ -20024,10 +19894,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 18768 i32.store offset=4 local.get $0 @@ -20047,10 +19917,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 19184 i32.store offset=4 local.get $0 @@ -20070,10 +19940,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21664 i32.store offset=4 local.get $0 @@ -20093,10 +19963,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21792 i32.store offset=4 local.get $0 @@ -20116,10 +19986,10 @@ call $~lib/util/number/itoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 21952 i32.store offset=4 local.get $0 @@ -20139,10 +20009,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22048 i32.store offset=4 local.get $0 @@ -20162,10 +20032,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22160 i32.store offset=4 local.get $0 @@ -20185,10 +20055,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22256 i32.store offset=4 local.get $0 @@ -20208,10 +20078,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22336 i32.store offset=4 local.get $0 @@ -20231,10 +20101,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22400 i32.store offset=4 local.get $0 @@ -20254,10 +20124,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22464 i32.store offset=4 local.get $0 @@ -20277,10 +20147,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22528 i32.store offset=4 local.get $0 @@ -20300,10 +20170,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22592 i32.store offset=4 local.get $0 @@ -20323,10 +20193,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22656 i32.store offset=4 local.get $0 @@ -20346,10 +20216,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22704 i32.store offset=4 local.get $0 @@ -20369,10 +20239,10 @@ call $~lib/util/number/utoa64 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22752 i32.store offset=4 local.get $0 @@ -20391,10 +20261,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22800 i32.store offset=4 local.get $0 @@ -20413,10 +20283,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22800 i32.store offset=4 local.get $0 @@ -20435,10 +20305,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 7248 i32.store offset=4 local.get $0 @@ -20457,10 +20327,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22832 i32.store offset=4 local.get $0 @@ -20479,10 +20349,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 8544 i32.store offset=4 local.get $0 @@ -20501,10 +20371,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 7760 i32.store offset=4 local.get $0 @@ -20523,10 +20393,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 23856 i32.store offset=4 local.get $0 @@ -20545,10 +20415,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 7824 i32.store offset=4 local.get $0 @@ -20567,10 +20437,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 23920 i32.store offset=4 local.get $0 @@ -20589,10 +20459,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24000 i32.store offset=4 local.get $0 @@ -20611,10 +20481,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24064 i32.store offset=4 local.get $0 @@ -20633,10 +20503,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24144 i32.store offset=4 local.get $0 @@ -20655,10 +20525,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24192 i32.store offset=4 local.get $0 @@ -20677,10 +20547,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24256 i32.store offset=4 local.get $0 @@ -20699,10 +20569,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24320 i32.store offset=4 local.get $0 @@ -20721,10 +20591,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 7904 i32.store offset=4 local.get $0 @@ -20743,10 +20613,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24384 i32.store offset=4 local.get $0 @@ -20765,10 +20635,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 4832 i32.store offset=4 local.get $0 @@ -20787,10 +20657,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24416 i32.store offset=4 local.get $0 @@ -20809,10 +20679,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24448 i32.store offset=4 local.get $0 @@ -20831,10 +20701,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24480 i32.store offset=4 local.get $0 @@ -20853,10 +20723,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24528 i32.store offset=4 local.get $0 @@ -20875,10 +20745,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24576 i32.store offset=4 local.get $0 @@ -20897,10 +20767,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24624 i32.store offset=4 local.get $0 @@ -20919,10 +20789,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24672 i32.store offset=4 local.get $0 @@ -20941,10 +20811,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24720 i32.store offset=4 local.get $0 @@ -20963,10 +20833,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 5120 i32.store offset=4 local.get $0 @@ -20985,10 +20855,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24752 i32.store offset=4 local.get $0 @@ -21007,10 +20877,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22832 i32.store offset=4 local.get $0 @@ -21029,10 +20899,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 8544 i32.store offset=4 local.get $0 @@ -21051,10 +20921,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24800 i32.store offset=4 local.get $0 @@ -21073,10 +20943,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24832 i32.store offset=4 local.get $0 @@ -21095,10 +20965,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24880 i32.store offset=4 local.get $0 @@ -21117,10 +20987,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24912 i32.store offset=4 local.get $0 @@ -21139,10 +21009,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 22800 i32.store offset=4 local.get $0 @@ -21161,10 +21031,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24960 i32.store offset=4 local.get $0 @@ -21183,10 +21053,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25008 i32.store offset=4 local.get $0 @@ -21205,10 +21075,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25072 i32.store offset=4 local.get $0 @@ -21227,10 +21097,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25136 i32.store offset=4 local.get $0 @@ -21249,10 +21119,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 24384 i32.store offset=4 local.get $0 @@ -21271,10 +21141,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25200 i32.store offset=4 local.get $0 @@ -21293,10 +21163,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25232 i32.store offset=4 local.get $0 @@ -21315,10 +21185,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25296 i32.store offset=4 local.get $0 @@ -21337,10 +21207,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25376 i32.store offset=4 local.get $0 @@ -21359,10 +21229,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25424 i32.store offset=4 local.get $0 @@ -21381,10 +21251,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25472 i32.store offset=4 local.get $0 @@ -21403,10 +21273,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25520 i32.store offset=4 local.get $0 @@ -21425,10 +21295,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25568 i32.store offset=4 local.get $0 @@ -21447,10 +21317,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25616 i32.store offset=4 local.get $0 @@ -21469,10 +21339,10 @@ call $~lib/util/number/dtoa local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 local.get $0 i32.store - local.get $1 + local.get $3 i32.const 25664 i32.store offset=4 local.get $0 @@ -21753,7 +21623,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -21770,15 +21639,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store + local.get $3 local.get $0 i32.const 2 i32.shl local.tee $4 - local.set $6 - local.get $4 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new local.set $3 @@ -21786,10 +21655,9 @@ if local.get $3 local.get $2 - local.get $6 + local.get $5 call $~lib/memory/memory.copy end - local.get $5 local.get $3 i32.store i32.const 16 @@ -21798,10 +21666,13 @@ local.tee $1 local.get $3 i32.store - local.get $1 local.get $3 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $1 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 local.get $3 i32.store offset=4 @@ -21837,10 +21708,10 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 local.get $0 i32.load offset=12 local.tee $3 @@ -21848,32 +21719,32 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store local.get $0 i32.load offset=4 local.set $0 loop $for-loop|0 - local.get $2 + local.get $1 local.get $3 i32.lt_s if - local.get $2 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $2 + i32.add + local.get $1 i32.const 2 i32.shl local.get $0 i32.add i32.load i32.store16 - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -21881,7 +21752,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) (local $1 i32) @@ -21982,7 +21853,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 local.get $2 i32.const 20 i32.sub @@ -21991,7 +21861,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 + i32.eqz local.get $0 i32.const 20 i32.sub @@ -22000,14 +21871,13 @@ i32.shr_u i32.const 1 i32.shl - local.tee $5 + local.tee $4 local.get $1 i32.const 1 i32.shl - local.tee $3 + local.tee $1 i32.gt_u - select - i32.eqz + i32.or if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22017,57 +21887,57 @@ return end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store - local.get $4 local.get $3 - local.get $5 + local.get $1 + local.get $4 i32.sub - local.tee $3 + local.tee $6 i32.lt_u if - local.get $4 local.get $3 + local.get $6 i32.const 2 i32.sub - local.get $4 + local.get $3 i32.div_u - local.tee $7 + local.tee $1 i32.mul - local.set $6 - local.get $1 + local.set $7 + local.get $5 local.get $2 - local.get $4 - local.get $7 - call $~lib/memory/memory.repeat + local.get $3 local.get $1 - local.get $6 + call $~lib/memory/memory.repeat + local.get $5 + local.get $7 i32.add local.get $2 - local.get $3 local.get $6 + local.get $7 i32.sub call $~lib/memory/memory.copy else - local.get $1 + local.get $5 local.get $2 - local.get $3 + local.get $6 call $~lib/memory/memory.copy end - local.get $1 - local.get $3 + local.get $5 + local.get $6 i32.add local.get $0 - local.get $5 + local.get $4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $5 ) (func $~lib/string/String#padEnd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -22092,7 +21962,6 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 0 local.get $2 i32.const 20 i32.sub @@ -22101,7 +21970,8 @@ i32.shr_u i32.const 1 i32.shl - local.tee $5 + local.tee $3 + i32.eqz local.get $0 i32.const 20 i32.sub @@ -22110,14 +21980,13 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $4 local.get $1 i32.const 1 i32.shl - local.tee $4 + local.tee $5 i32.gt_u - select - i32.eqz + i32.or if global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22127,53 +21996,53 @@ return end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store local.get $1 local.get $0 - local.get $3 + local.get $4 call $~lib/memory/memory.copy + local.get $3 local.get $5 local.get $4 - local.get $3 i32.sub - local.tee $0 + local.tee $5 i32.lt_u if + local.get $3 local.get $5 - local.get $0 i32.const 2 i32.sub - local.get $5 + local.get $3 i32.div_u - local.tee $6 + local.tee $0 i32.mul - local.set $4 + local.set $6 local.get $1 - local.get $3 + local.get $4 i32.add - local.tee $3 + local.tee $4 local.get $2 - local.get $5 - local.get $6 - call $~lib/memory/memory.repeat local.get $3 + local.get $0 + call $~lib/memory/memory.repeat local.get $4 + local.get $6 i32.add local.get $2 - local.get $0 - local.get $4 + local.get $5 + local.get $6 i32.sub call $~lib/memory/memory.copy else local.get $1 - local.get $3 + local.get $4 i32.add local.get $2 - local.get $0 + local.get $5 call $~lib/memory/memory.copy end global.get $~lib/memory/__stack_pointer @@ -22212,27 +22081,27 @@ i32.shr_u i32.const 1 i32.shl - local.set $3 + local.set $2 loop $while-continue|0 + local.get $1 local.get $2 - local.get $3 i32.lt_u if (result i32) block $__inlined_func$~lib/util/string/isSpace (result i32) local.get $0 - local.get $2 + local.get $1 i32.add i32.load16_u - local.tee $1 + local.tee $3 i32.const 5760 i32.lt_u if - local.get $1 + local.get $3 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $3 i32.const 9 i32.sub i32.const 4 @@ -22241,7 +22110,7 @@ br $__inlined_func$~lib/util/string/isSpace end i32.const 1 - local.get $1 + local.get $3 i32.const -8192 i32.add i32.const 10 @@ -22250,31 +22119,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $3 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $3 i32.const 65279 i32.eq br_if $case6|0 @@ -22289,14 +22158,14 @@ i32.const 0 end if - local.get $2 + local.get $1 i32.const 2 i32.add - local.set $2 + local.set $1 br $while-continue|0 end end - local.get $2 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22306,10 +22175,10 @@ local.get $0 return end - local.get $3 local.get $2 + local.get $1 i32.sub - local.tee $1 + local.tee $2 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22320,16 +22189,16 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/rt/itcms/__new local.tee $3 i32.store local.get $3 local.get $0 - local.get $2 - i32.add local.get $1 + i32.add + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22368,27 +22237,27 @@ i32.const 1 i32.shl local.tee $3 - local.set $2 + local.set $1 loop $while-continue|0 - local.get $2 + local.get $1 if (result i32) block $__inlined_func$~lib/util/string/isSpace (result i32) local.get $0 - local.get $2 + local.get $1 i32.add i32.const 2 i32.sub i32.load16_u - local.tee $1 + local.tee $2 i32.const 5760 i32.lt_u if - local.get $1 + local.get $2 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $2 i32.const 9 i32.sub i32.const 4 @@ -22397,7 +22266,7 @@ br $__inlined_func$~lib/util/string/isSpace end i32.const 1 - local.get $1 + local.get $2 i32.const -8192 i32.add i32.const 10 @@ -22406,31 +22275,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $2 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $2 i32.const 65279 i32.eq br_if $case6|0 @@ -22445,14 +22314,14 @@ i32.const 0 end if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 br $while-continue|0 end end - local.get $2 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22462,7 +22331,7 @@ i32.const 1712 return end - local.get $2 + local.get $1 local.get $3 i32.eq if @@ -22474,20 +22343,20 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - local.get $0 local.get $2 + local.get $0 + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $~lib/string/String#trim (param $0 i32) (result i32) (local $1 i32) @@ -22518,30 +22387,30 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 1 i32.shl - local.set $2 + local.set $1 loop $while-continue|0 - local.get $2 + local.get $1 if (result i32) block $__inlined_func$~lib/util/string/isSpace (result i32) local.get $0 - local.get $2 + local.get $1 i32.add i32.const 2 i32.sub i32.load16_u - local.tee $1 + local.tee $4 i32.const 5760 i32.lt_u if - local.get $1 + local.get $4 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $4 i32.const 9 i32.sub i32.const 4 @@ -22550,7 +22419,7 @@ br $__inlined_func$~lib/util/string/isSpace end i32.const 1 - local.get $1 + local.get $4 i32.const -8192 i32.add i32.const 10 @@ -22559,31 +22428,31 @@ drop block $break|0 block $case6|0 - local.get $1 + local.get $4 i32.const 5760 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 8232 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 8233 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 8239 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 8287 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 12288 i32.eq br_if $case6|0 - local.get $1 + local.get $4 i32.const 65279 i32.eq br_if $case6|0 @@ -22598,33 +22467,33 @@ i32.const 0 end if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 br $while-continue|0 end end loop $while-continue|1 + local.get $1 local.get $2 - local.get $3 i32.gt_u if (result i32) block $__inlined_func$~lib/util/string/isSpace0 (result i32) local.get $0 - local.get $3 + local.get $2 i32.add i32.load16_u - local.tee $1 + local.tee $4 i32.const 5760 i32.lt_u if - local.get $1 + local.get $4 i32.const 128 i32.or i32.const 160 i32.eq - local.get $1 + local.get $4 i32.const 9 i32.sub i32.const 4 @@ -22633,7 +22502,7 @@ br $__inlined_func$~lib/util/string/isSpace0 end i32.const 1 - local.get $1 + local.get $4 i32.const -8192 i32.add i32.const 10 @@ -22642,31 +22511,31 @@ drop block $break|01 block $case6|02 - local.get $1 + local.get $4 i32.const 5760 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 8232 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 8233 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 8239 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 8287 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 12288 i32.eq br_if $case6|02 - local.get $1 + local.get $4 i32.const 65279 i32.eq br_if $case6|02 @@ -22681,18 +22550,18 @@ i32.const 0 end if - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 - local.get $2 + local.set $2 + local.get $1 i32.const 2 i32.sub - local.set $2 + local.set $1 br $while-continue|1 end end - local.get $2 + local.get $1 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22703,12 +22572,12 @@ return end i32.const 0 - local.get $4 + local.get $3 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.eq - local.get $3 + local.get $2 select if global.get $~lib/memory/__stack_pointer @@ -22719,22 +22588,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 - local.get $0 local.get $3 - i32.add + local.get $0 local.get $2 + i32.add + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 ) (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -22766,7 +22635,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -22775,9 +22644,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -22788,26 +22657,26 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -22830,27 +22699,23 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store + local.get $1 + i32.const 0 + i32.lt_s local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $2 + local.tee $2 + i64.extend_i32_s local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s - i64.mul - i64.const 268435456 - i64.gt_u - end + i64.extend_i32_s + i64.mul + i64.const 268435456 + i64.gt_u + i32.or if i32.const 13648 i32.const 1328 @@ -22936,19 +22801,19 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.ge_u if local.get $3 local.get $4 - i32.ge_u + i32.le_u if local.get $2 local.get $0 @@ -22980,29 +22845,29 @@ i32.const 1 i32.shr_u local.tee $5 - local.get $3 local.get $4 + local.get $3 i32.sub local.tee $6 i32.add - local.tee $3 + local.tee $4 if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 local.get $0 local.get $1 i32.const 1 i32.shl local.tee $7 call $~lib/memory/memory.copy - local.get $3 + local.get $4 local.get $7 i32.add local.get $2 @@ -23015,10 +22880,10 @@ i32.add i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 i32.add i32.const 1 i32.shl @@ -23034,7 +22899,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return end end @@ -23054,43 +22919,43 @@ (local $9 i32) (local $10 i32) (local $11 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 25884 - i32.lt_s - if - i32.const 42288 - i32.const 42336 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store block $folding-inner0 - local.get $1 + 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 25884 + i32.lt_s + if + i32.const 42288 + i32.const 42336 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 - i32.shr_u - local.tee $7 - local.get $0 + i32.shr_u + local.tee $3 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 - i32.ge_u + local.tee $8 + i32.le_u if - local.get $4 - local.get $7 + local.get $3 + local.get $8 i32.ge_u if local.get $2 @@ -23109,46 +22974,46 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $3 - local.get $7 + local.set $4 + local.get $8 i32.eqz if - local.get $3 + local.get $4 i32.eqz br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $3 local.get $4 + local.get $3 i32.const 1 i32.add i32.mul - local.get $4 + local.get $3 i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 + local.get $4 local.set $1 loop $for-loop|0 - local.get $4 - local.get $9 + local.get $3 + local.get $5 i32.gt_u if local.get $1 i32.const 1 i32.shl - local.get $5 + local.get $6 i32.add - local.get $9 + local.get $5 i32.const 1 i32.shl local.get $0 @@ -23161,21 +23026,21 @@ local.tee $1 i32.const 1 i32.shl - local.get $5 + local.get $6 i32.add local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $1 - local.get $3 + local.get $4 i32.add local.set $1 - local.get $9 + local.get $5 i32.const 1 i32.add - local.set $9 + local.set $5 br $for-loop|0 end end @@ -23183,47 +23048,47 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return end - local.get $3 - local.get $7 + local.get $4 + local.get $8 i32.eq if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 1 i32.shl - local.tee $5 + local.tee $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $5 i32.store - local.get $4 - local.get $0 local.get $5 + local.get $0 + local.get $3 call $~lib/memory/memory.copy loop $while-continue|1 local.get $0 local.get $1 local.get $10 call $~lib/string/String#indexOf - local.tee $5 + local.tee $3 i32.const -1 i32.xor if - local.get $5 + local.get $3 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $5 - local.get $7 + local.get $3 + local.get $8 i32.add local.set $10 br $while-continue|1 @@ -23233,17 +23098,17 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end - local.get $4 + local.get $3 local.set $5 loop $while-continue|2 local.get $0 local.get $1 local.get $10 call $~lib/string/String#indexOf - local.tee $9 + local.tee $7 i32.const -1 i32.xor if @@ -23261,7 +23126,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 1 i32.shl i32.const 1 @@ -23270,9 +23135,9 @@ i32.store offset=4 end local.get $5 - local.get $3 - local.get $8 + local.get $4 local.get $9 + local.get $7 local.get $10 i32.sub local.tee $6 @@ -23292,7 +23157,7 @@ local.tee $11 i32.store offset=4 end - local.get $8 + local.get $9 i32.const 1 i32.shl local.get $11 @@ -23307,24 +23172,24 @@ i32.shl call $~lib/memory/memory.copy local.get $6 - local.get $8 + local.get $9 i32.add - local.tee $10 + local.tee $6 i32.const 1 i32.shl local.get $11 i32.add local.get $2 - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $3 - local.get $10 + local.get $4 + local.get $6 i32.add - local.set $8 + local.set $9 local.get $7 - local.get $9 + local.get $8 i32.add local.set $10 br $while-continue|2 @@ -23333,8 +23198,8 @@ local.get $11 if local.get $5 - local.get $8 - local.get $4 + local.get $9 + local.get $3 local.get $10 i32.sub local.tee $1 @@ -23355,7 +23220,7 @@ end local.get $1 if - local.get $8 + local.get $9 i32.const 1 i32.shl local.get $11 @@ -23372,7 +23237,7 @@ end local.get $5 local.get $1 - local.get $8 + local.get $9 i32.add local.tee $0 i32.gt_u @@ -23493,24 +23358,24 @@ local.get $2 i32.const 1 i32.shl - local.tee $3 + local.tee $2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $1 i32.const 1 i32.shl local.get $0 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -23669,10 +23534,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $4 i32.sub - local.tee $2 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -23686,7 +23551,7 @@ local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.eq local.get $4 select @@ -23699,7 +23564,7 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new local.tee $1 @@ -23708,7 +23573,7 @@ local.get $0 local.get $4 i32.add - local.get $2 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 @@ -23798,14 +23663,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if i32.const 15632 i32.const 15760 @@ -23840,47 +23704,46 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add @@ -23888,16 +23751,16 @@ end local.get $5 i32.add - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 local.get $1 local.get $2 + local.get $0 call $~lib/util/number/utoa32_dec_lut else local.get $1 @@ -23915,28 +23778,28 @@ i32.const 1 i32.add i32.add - local.tee $1 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store local.get $2 i64.extend_i32_u local.set $3 loop $while-continue|0 - local.get $1 + local.get $0 i32.const 2 i32.ge_u if - local.get $1 + local.get $0 i32.const 2 i32.sub - local.tee $1 + local.tee $0 i32.const 1 i32.shl - local.get $0 + local.get $1 i32.add local.get $3 i32.wrap_i64 @@ -23955,11 +23818,11 @@ br $while-continue|0 end end - local.get $1 + local.get $0 i32.const 1 i32.and if - local.get $0 + local.get $1 local.get $3 i32.wrap_i64 i32.const 6 @@ -23977,6 +23840,7 @@ local.tee $6 local.set $3 local.get $1 + local.tee $2 i32.popcnt i32.const 1 i32.eq @@ -23987,7 +23851,7 @@ i32.wrap_i64 i32.sub i32.const 31 - local.get $1 + local.get $2 i32.clz i32.sub i32.div_u @@ -23995,7 +23859,7 @@ i32.add br $__inlined_func$~lib/util/number/ulog_base end - local.get $1 + local.get $2 i64.extend_i32_s local.tee $7 local.set $4 @@ -24023,8 +23887,8 @@ end loop $while-continue|1 local.get $3 - i64.const 1 - i64.ge_u + i64.const 0 + i64.ne if local.get $3 local.get $7 @@ -24043,23 +23907,23 @@ end local.get $5 i32.add - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 local.get $6 + local.get $0 local.get $2 - local.get $1 call $~lib/util/number/utoa64_any_core end end local.get $5 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -24067,11 +23931,11 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i32) + (local $2 i32) + (local $3 i64) (local $4 i64) (local $5 i64) (local $6 i64) @@ -24093,14 +23957,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if i32.const 15632 i32.const 15760 @@ -24125,62 +23988,61 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 local.get $1 local.get $0 + local.get $2 call $~lib/util/number/utoa32_dec_lut else local.get $1 @@ -24196,17 +24058,17 @@ i32.shr_s i32.const 1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store local.get $0 i64.extend_i32_u - local.set $2 - local.get $1 + local.set $3 + local.get $2 local.set $0 loop $while-continue|0 local.get $0 @@ -24219,9 +24081,9 @@ local.tee $0 i32.const 1 i32.shl - local.get $3 + local.get $1 i32.add - local.get $2 + local.get $3 i32.wrap_i64 i32.const 255 i32.and @@ -24231,10 +24093,10 @@ i32.add i32.load i32.store - local.get $2 + local.get $3 i64.const 8 i64.shr_u - local.set $2 + local.set $3 br $while-continue|0 end end @@ -24242,8 +24104,8 @@ i32.const 1 i32.and if + local.get $1 local.get $3 - local.get $2 i32.wrap_i64 i32.const 6 i32.shl @@ -24258,19 +24120,20 @@ local.get $0 i64.extend_i32_u local.tee $5 - local.set $2 + local.set $3 local.get $1 + local.tee $2 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $2 + local.get $3 i64.clz i32.wrap_i64 i32.sub i32.const 31 - local.get $1 + local.get $2 i32.clz i32.sub i32.div_u @@ -24278,21 +24141,21 @@ i32.add br $__inlined_func$~lib/util/number/ulog_base end - local.get $1 + local.get $2 i64.extend_i32_s local.tee $6 local.set $4 i32.const 1 local.set $0 loop $while-continue|00 - local.get $2 + local.get $3 local.get $4 i64.ge_u if - local.get $2 + local.get $3 local.get $4 i64.div_u - local.set $2 + local.set $3 local.get $4 local.get $4 i64.mul @@ -24305,14 +24168,14 @@ end end loop $while-continue|1 - local.get $2 - i64.const 1 - i64.ge_u + local.get $3 + i64.const 0 + i64.ne if - local.get $2 + local.get $3 local.get $6 i64.div_u - local.set $2 + local.set $3 local.get $0 i32.const 1 i32.add @@ -24329,12 +24192,12 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 local.get $5 local.get $0 - local.get $1 + local.get $2 call $~lib/util/number/utoa64_any_core end end @@ -24342,14 +24205,14 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 ) (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) - (local $5 i32) - (local $6 i64) + (local $5 i64) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24368,14 +24231,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if i32.const 15632 i32.const 15760 @@ -24405,54 +24267,54 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $5 local.tee $1 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $3 i32.const 100000000 i32.ge_u i32.add end end - local.tee $1 + local.tee $6 i32.const 1 i32.shl i32.const 1 @@ -24460,8 +24322,8 @@ local.tee $3 i32.store local.get $3 - local.get $5 local.get $1 + local.get $6 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -24619,7 +24481,7 @@ end local.get $1 i64.extend_i32_s - local.tee $6 + local.tee $5 local.set $4 i32.const 1 local.set $3 @@ -24645,11 +24507,11 @@ end loop $while-continue|1 local.get $2 - i64.const 1 - i64.ge_u + i64.const 0 + i64.ne if local.get $2 - local.get $6 + local.get $5 i64.div_u local.set $2 local.get $3 @@ -24663,7 +24525,7 @@ i32.const 1 i32.sub end - local.tee $5 + local.tee $6 i32.const 1 i32.shl i32.const 1 @@ -24672,7 +24534,7 @@ i32.store local.get $3 local.get $0 - local.get $5 + local.get $6 local.get $1 call $~lib/util/number/utoa64_any_core end @@ -24684,12 +24546,12 @@ local.get $3 ) (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) + (local $2 i64) + (local $3 i32) (local $4 i32) (local $5 i64) - (local $6 i32) - (local $7 i64) + (local $6 i64) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -24708,14 +24570,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s local.get $1 i32.const 2 i32.lt_s - select + local.get $1 + i32.const 36 + i32.gt_s + i32.or if i32.const 15632 i32.const 15760 @@ -24756,48 +24617,48 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.wrap_i64 - local.tee $2 local.tee $1 + local.tee $3 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $3 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $3 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $3 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $3 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $3 i32.const 100000000 i32.ge_u i32.add @@ -24805,16 +24666,16 @@ end local.get $4 i32.add - local.tee $6 + local.tee $7 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store + local.get $3 local.get $1 - local.get $2 - local.get $6 + local.get $7 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -24870,16 +24731,16 @@ end local.get $4 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 local.get $0 - local.get $2 + local.get $1 call $~lib/util/number/utoa64_dec_lut end else @@ -24899,25 +24760,25 @@ i32.const 1 i32.add i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store loop $while-continue|0 - local.get $2 + local.get $1 i32.const 2 i32.ge_u if - local.get $2 + local.get $1 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl - local.get $1 + local.get $3 i32.add local.get $0 i32.wrap_i64 @@ -24936,11 +24797,11 @@ br $while-continue|0 end end - local.get $2 + local.get $1 i32.const 1 i32.and if - local.get $1 + local.get $3 local.get $0 i32.wrap_i64 i32.const 6 @@ -24954,20 +24815,19 @@ global.get $~lib/memory/__stack_pointer block $__inlined_func$~lib/util/number/ulog_base (result i32) local.get $0 - local.set $3 + local.set $2 local.get $1 - local.tee $2 i32.popcnt i32.const 1 i32.eq if i32.const 63 - local.get $3 + local.get $2 i64.clz i32.wrap_i64 i32.sub i32.const 31 - local.get $2 + local.get $1 i32.clz i32.sub i32.div_u @@ -24975,71 +24835,71 @@ i32.add br $__inlined_func$~lib/util/number/ulog_base end - local.get $2 + local.get $1 i64.extend_i32_s - local.tee $7 + local.tee $6 local.set $5 i32.const 1 - local.set $1 + local.set $3 loop $while-continue|00 - local.get $3 + local.get $2 local.get $5 i64.ge_u if - local.get $3 + local.get $2 local.get $5 i64.div_u - local.set $3 + local.set $2 local.get $5 local.get $5 i64.mul local.set $5 - local.get $1 + local.get $3 i32.const 1 i32.shl - local.set $1 + local.set $3 br $while-continue|00 end end loop $while-continue|1 - local.get $3 - i64.const 1 - i64.ge_u + local.get $2 + i64.const 0 + i64.ne if - local.get $3 - local.get $7 + local.get $2 + local.get $6 i64.div_u - local.set $3 - local.get $1 + local.set $2 + local.get $3 i32.const 1 i32.add - local.set $1 + local.set $3 br $while-continue|1 end end - local.get $1 + local.get $3 i32.const 1 i32.sub end local.get $4 i32.add - local.tee $6 + local.tee $7 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 local.get $0 - local.get $6 - local.get $2 + local.get $7 + local.get $1 call $~lib/util/number/utoa64_any_core end end local.get $4 if - local.get $1 + local.get $3 i32.const 45 i32.store16 end @@ -25047,7 +24907,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $3 ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) @@ -25131,4 +24991,77 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index dfb1faca55..7ec58f8860 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -4795,14 +4795,17 @@ i32.or i32.const 160 i32.eq - local.get $0 - i32.const 9 - i32.sub - i32.const 13 - i32.const 9 - i32.sub - i32.le_u - i32.or + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 9 + i32.sub + i32.const 13 + i32.const 9 + i32.sub + i32.le_u + end return end local.get $0 diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index c50b5f8734..b3930647c5 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -104,46 +104,46 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $~lib/symbol/idToString local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/symbol/key1 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/symbol/key2 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/symbol/key3 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $std/symbol/key4 local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1328 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1536 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1648 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1136 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -210,7 +210,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -233,7 +233,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -243,15 +243,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -316,30 +316,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -376,11 +352,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -392,28 +367,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -425,19 +397,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -462,9 +434,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -472,17 +444,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -610,7 +582,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -621,7 +593,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -641,44 +613,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -688,7 +659,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -698,20 +669,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -739,7 +710,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -766,15 +737,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -786,15 +754,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -815,6 +783,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -824,7 +795,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -861,8 +832,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1021,7 +992,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1146,7 +1121,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1156,7 +1131,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1169,14 +1144,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1201,56 +1175,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1398,14 +1369,14 @@ i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $1 + i32.add + local.tee $2 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1415,17 +1386,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1441,22 +1412,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $1 + local.get $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 20 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 16 i32.sub i32.const 0 @@ -1467,11 +1438,11 @@ i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 @@ -1566,10 +1537,6 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -1577,7 +1544,10 @@ end global.get $~lib/rt/tlsf/ROOT local.tee $5 - local.get $2 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1588,54 +1558,50 @@ call $~lib/builtins/abort unreachable end - local.get $2 + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $2 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $2 - call $~lib/rt/tlsf/searchBlock + select local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if memory.size - local.tee $4 + local.tee $2 + i32.const 4 + local.get $5 + i32.load offset=1568 local.get $2 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $2 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $2 - i32.add - else - local.get $2 - end - i32.const 4 - local.get $5 - i32.load offset=1568 - local.get $4 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1643,16 +1609,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $3 - local.get $3 + local.tee $4 + local.get $2 local.get $4 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $3 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1661,7 +1627,7 @@ end end local.get $5 - local.get $4 + local.get $2 i32.const 16 i32.shl memory.size @@ -1669,9 +1635,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $3 + local.tee $2 i32.eqz if i32.const 0 @@ -1682,11 +1648,11 @@ unreachable end end - local.get $3 + local.get $2 i32.load i32.const -4 i32.and - local.get $2 + local.get $3 i32.lt_u if i32.const 0 @@ -1697,12 +1663,12 @@ unreachable end local.get $5 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 - i32.load - local.set $4 local.get $2 + i32.load + local.set $6 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -1715,89 +1681,89 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const -4 i32.and - local.get $2 + local.get $3 i32.sub - local.tee $6 + local.tee $4 i32.const 16 i32.ge_u if - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const 2 i32.and - local.get $2 + local.get $3 i32.or i32.store - local.get $2 local.get $3 + local.get $2 i32.const 4 i32.add i32.add - local.tee $2 - local.get $6 + local.tee $3 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $5 - local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else - local.get $3 - local.get $4 + local.get $2 + local.get $6 i32.const -2 i32.and i32.store - local.get $3 + local.get $2 i32.const 4 i32.add - local.get $3 + local.get $2 i32.load i32.const -4 i32.and i32.add - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.load i32.const -3 i32.and i32.store end - local.get $3 + local.get $2 local.get $1 i32.store offset=12 - local.get $3 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $1 i32.load offset=8 - local.set $2 - local.get $3 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $2 local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $3 local.get $2 + local.get $3 i32.store offset=8 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or i32.store offset=4 local.get $1 - local.get $3 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.load i32.const -4 i32.and @@ -1805,7 +1771,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $3 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1813,66 +1779,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1200 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $~lib/util/hash/HASH<~lib/string/String> (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -2092,7 +1998,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -2106,32 +2012,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -2148,29 +2053,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -2184,48 +2089,49 @@ ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - local.get $1 - i32.const -1028477379 - i32.mul - i32.const 374761397 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $0 - local.get $0 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $0 - local.get $0 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - block $__inlined_func$~lib/map/Map#find + block $__inlined_func$~lib/map/Map#find (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $0 + i32.const 15 + i32.shr_u + local.get $0 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + i32.const 13 + i32.shr_u + local.get $0 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + i32.const 16 + i32.shr_u + local.get $0 + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 loop $while-continue|0 local.get $0 if + local.get $0 local.get $0 i32.load offset=8 local.tee $2 @@ -2240,6 +2146,7 @@ i32.eq end br_if $__inlined_func$~lib/map/Map#find + drop local.get $2 i32.const -2 i32.and @@ -2248,9 +2155,8 @@ end end i32.const 0 - local.set $0 end - local.get $0 + local.tee $0 i32.eqz if i32.const 1648 @@ -2276,17 +2182,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2432,19 +2338,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2459,7 +2365,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2470,10 +2376,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2481,10 +2387,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2495,7 +2401,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2525,17 +2431,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2550,7 +2456,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2561,10 +2467,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2572,10 +2478,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2586,7 +2492,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2612,17 +2518,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2637,7 +2543,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2648,10 +2554,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2659,10 +2565,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2673,7 +2579,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2710,131 +2616,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2851,59 +2735,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2920,7 +2798,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2931,11 +2809,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2949,17 +2827,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -3168,34 +3046,34 @@ (local $2 i32) (local $3 i32) (local $4 i32) - 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 2700 - i32.lt_s - if - i32.const 19104 - i32.const 19152 + block $__inlined_func$~lib/string/String#concat (result i32) + 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 2700 + i32.lt_s + if + i32.const 19104 + i32.const 19152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3204,9 +3082,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -3214,63 +3092,113 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1824 - local.set $2 br $__inlined_func$~lib/string/String#concat end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $2 ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) (local $2 i32) - block $invalid - block $~lib/map/Map - block $~lib/map/Map<~lib/string/String,usize> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid + (local $3 i32) + block $folding-inner0 + block $invalid + block $~lib/map/Map + block $~lib/map/Map<~lib/string/String,usize> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid + end + return end return end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - local.tee $0 + local.tee $1 if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + local.get $0 + i32.load offset=8 + local.tee $1 + local.tee $0 + i32.add + local.set $2 + loop $while-continue|0 local.get $0 - call $~lib/rt/itcms/__visit + local.get $2 + i32.lt_u + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + i32.load + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + end + local.get $0 + i32.const 12 + i32.add + local.set $0 + br $while-continue|0 + end end - return + br $folding-inner0 end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.load offset=16 i32.const 12 @@ -3281,7 +3209,7 @@ local.tee $0 i32.add local.set $2 - loop $while-continue|0 + loop $while-continue|03 local.get $0 local.get $2 i32.lt_u @@ -3293,60 +3221,29 @@ i32.eqz if local.get $0 - i32.load - call $~lib/rt/itcms/__visit + i32.load offset=4 + local.tee $3 + if + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end end local.get $0 i32.const 12 i32.add local.set $0 - br $while-continue|0 + br $while-continue|03 end end - local.get $1 - call $~lib/rt/itcms/__visit - return - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - local.get $0 - i32.load offset=8 - local.tee $1 - local.tee $0 - i32.add - local.set $2 - loop $while-continue|00 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - end - local.get $0 - i32.const 12 - i32.add - local.set $0 - br $while-continue|00 - end + br $folding-inner0 end + unreachable + end + local.get $1 + if local.get $1 - call $~lib/rt/itcms/__visit - return + call $byn-split-outlined-A$~lib/rt/itcms/__visit end - unreachable ) (func $~start global.get $~started @@ -3441,15 +3338,16 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -3457,22 +3355,22 @@ if global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/stringToId - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 1056 call $~lib/util/hash/HASH<~lib/string/String> call $~lib/map/Map<~lib/string/String,usize>#find if global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/stringToId - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 1056 call $~lib/util/hash/HASH<~lib/string/String> call $~lib/map/Map<~lib/string/String,usize>#find - local.tee $2 + local.tee $0 i32.eqz if i32.const 1648 @@ -3482,7 +3380,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3498,52 +3396,58 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $1 i32.store - local.get $2 + local.get $1 + if + local.get $0 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 i32.const 3 i32.store offset=4 - local.get $2 + local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $2 + local.get $1 + if + local.get $0 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 i32.const 4 i32.store offset=12 - local.get $2 + local.get $0 i32.const 0 i32.store offset=16 - local.get $2 + local.get $0 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 global.set $~lib/symbol/stringToId global.get $~lib/memory/__stack_pointer i32.const 4 @@ -3552,60 +3456,66 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $1 i32.store - local.get $2 + local.get $1 + if + local.get $0 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 i32.const 3 i32.store offset=4 - local.get $2 + local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $2 + local.get $1 + if + local.get $0 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 i32.const 4 i32.store offset=12 - local.get $2 + local.get $0 i32.const 0 i32.store offset=16 - local.get $2 + local.get $0 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 global.set $~lib/symbol/idToString end global.get $~lib/symbol/nextId - local.tee $6 + local.tee $2 i32.const 1 i32.add global.set $~lib/symbol/nextId - local.get $6 + local.get $2 i32.eqz if unreachable @@ -3613,7 +3523,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $~lib/symbol/stringToId - local.tee $2 + local.tee $5 i32.store local.get $0 i32.const 4 @@ -3622,30 +3532,32 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 + local.get $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $2 + local.get $5 i32.const 1056 call $~lib/util/hash/HASH<~lib/string/String> - local.tee $9 + local.tee $6 call $~lib/map/Map<~lib/string/String,usize>#find local.tee $0 if local.get $0 - local.get $6 + local.get $1 i32.store offset=4 else - local.get $2 + local.get $5 i32.load offset=16 - local.get $2 + local.get $5 i32.load offset=12 i32.eq if - local.get $2 + local.get $5 i32.load offset=20 - local.get $2 + local.get $5 i32.load offset=12 i32.const 3 i32.mul @@ -3653,17 +3565,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $2 + local.get $5 i32.load offset=4 else - local.get $2 + local.get $5 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $4 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -3671,7 +3583,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -3680,14 +3592,14 @@ i32.const 0 i32.store offset=8 local.get $0 - local.get $4 + local.get $7 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -3695,59 +3607,59 @@ i32.shl i32.const 3 i32.div_s - local.tee $10 + local.tee $9 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $5 i32.load offset=8 - local.tee $3 - local.get $2 + local.tee $4 + local.get $5 i32.load offset=16 i32.const 12 i32.mul i32.add - local.set $5 - local.get $1 + local.set $10 + local.get $3 local.set $0 loop $while-continue|0 - local.get $3 - local.get $5 + local.get $4 + local.get $10 i32.ne if - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.load - local.tee $8 + local.tee $11 i32.store offset=8 local.get $0 - local.get $8 + local.get $11 i32.store local.get $0 - local.get $3 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $8 + local.get $11 call $~lib/util/hash/HASH<~lib/string/String> - local.get $4 + local.get $7 i32.and i32.const 2 i32.shl - local.get $7 + local.get $8 i32.add - local.tee $8 + local.tee $11 i32.load i32.store offset=8 - local.get $8 + local.get $11 local.get $0 i32.store local.get $0 @@ -3755,35 +3667,41 @@ i32.add local.set $0 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 + local.set $4 br $while-continue|0 end end - local.get $2 - local.get $7 + local.get $5 + local.get $8 i32.store - local.get $2 + local.get $8 + if + local.get $5 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $4 i32.store offset=4 - local.get $2 - local.get $1 + local.get $5 + local.get $3 i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $10 + local.get $3 + if + local.get $5 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 + local.get $9 i32.store offset=12 - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -3792,18 +3710,18 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.load offset=8 local.tee $0 i32.store - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=16 - local.tee $4 + local.tee $3 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $3 i32.const 12 i32.mul local.get $0 @@ -3811,33 +3729,33 @@ local.tee $0 i32.const 1056 i32.store - local.get $2 + local.get $5 i32.const 1056 i32.const 1 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link local.get $0 - local.get $6 + local.get $1 i32.store offset=4 - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $9 + local.get $6 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $3 i32.load i32.store offset=8 - local.get $2 + local.get $3 local.get $0 i32.store end @@ -3848,7 +3766,7 @@ global.get $~lib/memory/__stack_pointer local.tee $0 global.get $~lib/symbol/idToString - local.tee $2 + local.tee $5 i32.store local.get $0 i32.const 4 @@ -3857,13 +3775,13 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $2 + local.get $5 i32.load - local.get $6 + local.get $1 i32.const -1028477379 i32.mul i32.const 374761397 @@ -3873,26 +3791,26 @@ i32.const 668265263 i32.mul local.tee $0 + local.get $0 i32.const 15 i32.shr_u - local.get $0 i32.xor i32.const -2048144777 i32.mul local.tee $0 + local.get $0 i32.const 13 i32.shr_u - local.get $0 i32.xor i32.const -1028477379 i32.mul local.tee $0 + local.get $0 i32.const 16 i32.shr_u - local.get $0 i32.xor - local.tee $8 - local.get $2 + local.tee $6 + local.get $5 i32.load offset=4 i32.and i32.const 2 @@ -3901,28 +3819,28 @@ i32.load local.set $0 block $__inlined_func$~lib/map/Map#find - loop $while-continue|00 + loop $while-continue|02 local.get $0 if local.get $0 i32.load offset=8 - local.tee $1 + local.tee $3 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $6 + local.get $1 local.get $0 i32.load i32.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $3 i32.const -2 i32.and local.set $0 - br $while-continue|00 + br $while-continue|02 end end i32.const 0 @@ -3933,20 +3851,20 @@ local.get $0 i32.const 1056 i32.store offset=4 - local.get $2 + local.get $5 i32.const 1056 i32.const 1 - call $~lib/rt/itcms/__link + call $byn-split-outlined-A$~lib/rt/itcms/__link else - local.get $2 + local.get $5 i32.load offset=16 - local.get $2 + local.get $5 i32.load offset=12 i32.eq if - local.get $2 + local.get $5 i32.load offset=20 - local.get $2 + local.get $5 i32.load offset=12 i32.const 3 i32.mul @@ -3954,17 +3872,17 @@ i32.div_s i32.lt_s if (result i32) - local.get $2 + local.get $5 i32.load offset=4 else - local.get $2 + local.get $5 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $4 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3972,20 +3890,20 @@ global.get $~lib/memory/__stack_pointer i32.const 2700 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 - local.get $4 + local.get $7 i32.const 1 i32.add local.tee $0 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $7 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -3997,41 +3915,41 @@ i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $5 i32.load offset=8 - local.tee $3 - local.get $2 + local.tee $4 + local.get $5 i32.load offset=16 i32.const 12 i32.mul i32.add local.set $10 - local.get $1 + local.get $3 local.set $0 - loop $while-continue|01 - local.get $3 + loop $while-continue|03 + local.get $4 local.get $10 i32.ne if - local.get $3 + local.get $4 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $0 - local.get $3 + local.get $4 i32.load - local.tee $5 + local.tee $11 i32.store local.get $0 - local.get $3 + local.get $4 i32.load offset=4 i32.store offset=4 local.get $0 - local.get $5 + local.get $11 i32.const -1028477379 i32.mul i32.const 374761397 @@ -4040,35 +3958,35 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $5 + local.tee $11 + local.get $11 i32.const 15 i32.shr_u - local.get $5 i32.xor i32.const -2048144777 i32.mul - local.tee $5 + local.tee $11 + local.get $11 i32.const 13 i32.shr_u - local.get $5 i32.xor i32.const -1028477379 i32.mul - local.tee $5 + local.tee $11 + local.get $11 i32.const 16 i32.shr_u - local.get $5 i32.xor - local.get $4 + local.get $7 i32.and i32.const 2 i32.shl - local.get $7 + local.get $8 i32.add - local.tee $5 + local.tee $11 i32.load i32.store offset=8 - local.get $5 + local.get $11 local.get $0 i32.store local.get $0 @@ -4076,35 +3994,41 @@ i32.add local.set $0 end - local.get $3 + local.get $4 i32.const 12 i32.add - local.set $3 - br $while-continue|01 + local.set $4 + br $while-continue|03 end end - local.get $2 - local.get $7 + local.get $5 + local.get $8 i32.store - local.get $2 + local.get $8 + if + local.get $5 + local.get $8 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 local.get $7 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 - local.get $4 i32.store offset=4 - local.get $2 - local.get $1 + local.get $5 + local.get $3 i32.store offset=8 - local.get $2 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - local.get $2 + local.get $3 + if + local.get $5 + local.get $3 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $5 local.get $9 i32.store offset=12 - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=20 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -4113,52 +4037,52 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $5 i32.load offset=8 local.tee $0 i32.store - local.get $2 - local.get $2 + local.get $5 + local.get $5 i32.load offset=16 - local.tee $4 + local.tee $3 i32.const 1 i32.add i32.store offset=16 - local.get $4 + local.get $3 i32.const 12 i32.mul local.get $0 i32.add local.tee $0 - local.get $6 + local.get $1 i32.store local.get $0 i32.const 1056 i32.store offset=4 - local.get $2 + local.get $5 i32.const 1056 i32.const 1 - call $~lib/rt/itcms/__link - local.get $2 - local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + local.get $5 + local.get $5 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 local.get $0 - local.get $2 + local.get $5 i32.load - local.get $2 + local.get $5 i32.load offset=4 - local.get $8 + local.get $6 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $1 i32.load i32.store offset=8 - local.get $2 + local.get $1 local.get $0 i32.store end @@ -4170,7 +4094,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $2 return end i32.const 19104 @@ -4221,23 +4145,23 @@ i32.const 668265263 i32.mul local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 @@ -4439,23 +4363,23 @@ i32.const 668265263 i32.mul local.tee $1 + local.get $1 i32.const 15 i32.shr_u - local.get $1 i32.xor i32.const -2048144777 i32.mul local.tee $1 + local.get $1 i32.const 13 i32.shr_u - local.get $1 i32.xor i32.const -1028477379 i32.mul local.tee $1 + local.get $1 i32.const 16 i32.shr_u - local.get $1 i32.xor i32.and i32.const 2 @@ -4497,12 +4421,12 @@ end if global.get $~lib/memory/__stack_pointer - local.tee $2 - global.get $~lib/symbol/idToString local.tee $1 + global.get $~lib/symbol/idToString + local.tee $2 i32.store offset=4 - local.get $2 local.get $1 + local.get $2 local.get $0 call $~lib/map/Map#get local.tee $2 @@ -4899,4 +4823,77 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 18df4d77cd..8c5d167c33 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -679,31 +679,31 @@ (local $0 i32) (local $1 i32) i32.const 7152 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 7616 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 7728 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 10928 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11008 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11088 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 11264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1168 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 8432 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 9488 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -770,7 +770,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -793,7 +793,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -803,15 +803,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -876,30 +876,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -936,11 +912,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -952,28 +927,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -985,19 +957,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -1022,9 +994,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -1032,17 +1004,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -1170,7 +1142,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -1181,7 +1153,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -1201,44 +1173,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1248,7 +1219,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1258,20 +1229,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -1299,7 +1270,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -1326,15 +1297,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -1346,15 +1314,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -1375,6 +1343,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -1384,7 +1355,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -1421,8 +1392,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1537,18 +1508,18 @@ unreachable end local.get $1 - local.tee $0 - local.get $0 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock ) (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) + (local $2 i32) block $folding-inner0 block $break|0 block $case2|0 @@ -1631,7 +1602,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1766,56 +1741,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1893,19 +1865,12 @@ end end ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $3 local.get $0 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1916,54 +1881,50 @@ call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $0 + select + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 - local.get $0 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $0 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $0 - i32.add - else - local.get $0 - end + local.tee $1 i32.const 4 - local.get $3 + local.get $0 i32.load offset=1568 - local.get $2 + local.get $1 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1971,16 +1932,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $2 local.get $1 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1988,16 +1949,16 @@ unreachable end end - local.get $3 - local.get $2 + local.get $0 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -2014,7 +1975,7 @@ i32.load i32.const -4 i32.and - local.get $0 + local.get $3 i32.lt_u if i32.const 0 @@ -2024,13 +1985,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.set $2 - local.get $0 + local.set $4 + local.get $3 i32.const 4 i32.add i32.const 15 @@ -2043,40 +2004,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 i32.const -4 i32.and - local.get $0 + local.get $3 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if local.get $1 - local.get $2 + local.get $4 i32.const 2 i32.and - local.get $0 + local.get $3 i32.or i32.store - local.get $0 + local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.tee $0 - local.get $4 + local.tee $3 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $0 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $4 i32.const -2 i32.and i32.store @@ -2096,12 +2057,10 @@ i32.store end local.get $1 - i32.const 4 - i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) + (local $3 i64) + (local $4 i32) (local $5 i32) block $~lib/util/memory/memset|inlined.0 local.get $2 @@ -2113,7 +2072,7 @@ local.get $0 local.get $2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.sub local.get $1 @@ -2128,12 +2087,12 @@ local.get $0 local.get $1 i32.store8 offset=2 - local.get $3 + local.get $4 i32.const 2 i32.sub local.get $1 i32.store8 - local.get $3 + local.get $4 i32.const 3 i32.sub local.get $1 @@ -2145,7 +2104,7 @@ local.get $0 local.get $1 i32.store8 offset=3 - local.get $3 + local.get $4 i32.const 4 i32.sub local.get $1 @@ -2160,9 +2119,9 @@ i32.sub i32.const 3 i32.and - local.tee $5 + local.tee $4 i32.add - local.tee $3 + local.tee $5 local.get $1 i32.const 255 i32.and @@ -2170,9 +2129,9 @@ i32.mul local.tee $0 i32.store - local.get $3 - local.get $2 local.get $5 + local.get $2 + local.get $4 i32.sub i32.const -4 i32.and @@ -2187,10 +2146,10 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $5 local.get $0 i32.store offset=4 - local.get $3 + local.get $5 local.get $0 i32.store offset=8 local.get $1 @@ -2207,16 +2166,16 @@ i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $5 local.get $0 i32.store offset=12 - local.get $3 + local.get $5 local.get $0 i32.store offset=16 - local.get $3 + local.get $5 local.get $0 i32.store offset=20 - local.get $3 + local.get $5 local.get $0 i32.store offset=24 local.get $1 @@ -2239,43 +2198,43 @@ i32.sub local.get $0 i32.store - local.get $3 - local.get $3 + local.get $5 + local.get $5 i32.const 4 i32.and i32.const 24 i32.add - local.tee $5 + local.tee $4 i32.add local.set $1 local.get $2 - local.get $5 + local.get $4 i32.sub local.set $2 local.get $0 i64.extend_i32_u - local.tee $4 + local.tee $3 i64.const 32 i64.shl - local.get $4 + local.get $3 i64.or - local.set $4 + local.set $3 loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u if local.get $1 - local.get $4 + local.get $3 i64.store local.get $1 - local.get $4 + local.get $3 i64.store offset=8 local.get $1 - local.get $4 + local.get $3 i64.store offset=16 local.get $1 - local.get $4 + local.get $3 i64.store offset=24 local.get $2 i32.const 32 @@ -2338,23 +2297,27 @@ end global.get $~lib/rt/itcms/total local.tee $2 - local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 i32.lt_u i32.const 10 i32.shl + local.get $2 i32.add global.set $~lib/rt/itcms/threshold end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 16 i32.add - call $~lib/rt/tlsf/__alloc - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock local.tee $2 local.get $1 i32.store offset=12 @@ -2366,8 +2329,8 @@ i32.load offset=8 local.set $1 local.get $2 - global.get $~lib/rt/itcms/white local.get $3 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -2402,61 +2365,6 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) - local.get $1 - i32.eqz - if - return - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $0 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $0 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end - end - ) (func $std/typedarray/testInstantiate (param $0 i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -3066,41 +2974,41 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 f64) (local $6 f64) - (local $7 f64) - (local $8 i32) + (local $7 i32) + (local $8 f64) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 3 i32.shl local.get $0 i32.add local.tee $3 f64.load offset=8 - local.tee $7 + local.tee $8 local.set $6 local.get $3 f64.load @@ -3108,7 +3016,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3117,10 +3025,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -3136,10 +3044,10 @@ local.get $0 i32.add f64.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -3152,7 +3060,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 f64.store offset=16 local.get $3 i32.const 1 @@ -3214,10 +3122,10 @@ i32.add local.get $6 f64.store offset=8 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -3225,8 +3133,8 @@ (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 f64) - (local $6 f64) - (local $7 i32) + (local $6 i32) + (local $7 f64) local.get $1 local.get $2 i32.eq @@ -3267,9 +3175,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 f64.load offset=8 - local.get $7 + local.get $6 f64.load i32.const 2 global.set $~argumentsLength @@ -3310,14 +3218,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 f64.load f64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 f64.store local.get $2 @@ -3496,13 +3404,14 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $9 f64) + (local $10 f64) + (local $11 f64) (local $12 i32) (local $13 i32) - (local $14 f64) - (local $15 f64) + (local $14 i32) + (local $15 i32) + (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -3516,11 +3425,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -3528,17 +3436,17 @@ end local.get $0 f64.load - local.set $15 + local.set $11 local.get $0 f64.load offset=8 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3547,21 +3455,20 @@ local.tee $1 select f64.store - local.get $15 - local.get $14 - local.get $1 - select - local.set $15 local.get $0 f64.load offset=16 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3571,25 +3478,25 @@ select f64.store offset=8 local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $15 + local.set $10 local.get $0 f64.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3599,8 +3506,8 @@ select f64.store local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f64.store offset=8 @@ -3608,7 +3515,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -3620,52 +3527,68 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $12 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $11 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 3 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $13 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -3674,32 +3597,32 @@ if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 - local.get $13 + local.get $7 + local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -3708,68 +3631,66 @@ i32.lt_s if local.get $0 - local.get $6 - local.get $13 - local.get $6 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $13 + local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $16 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $11 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -3777,26 +3698,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $10 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -3805,14 +3726,14 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -3824,7 +3745,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -3836,13 +3757,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -3853,9 +3774,9 @@ br $for-loop|4 end end - local.get $10 + local.get $15 call $~lib/rt/tlsf/__free - local.get $12 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) @@ -3983,67 +3904,64 @@ ) (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - local.set $4 local.get $0 i32.load offset=4 - local.set $5 + local.set $4 local.get $0 i32.load offset=8 - local.set $1 + local.set $0 local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $1 + local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 i32.const 0 i32.gt_s select else local.get $2 - local.get $1 - local.get $1 + local.get $0 + local.get $0 local.get $2 i32.gt_s select end - local.tee $0 + local.tee $2 local.get $3 i32.const 0 i32.lt_s if (result i32) - local.get $1 + local.get $0 local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $3 - local.get $1 - local.get $1 + local.get $0 + local.get $0 local.get $3 i32.gt_s select end - local.tee $1 + local.tee $0 i32.lt_s if - local.get $0 - local.get $5 - i32.add + local.get $2 local.get $4 + i32.add local.get $1 local.get $0 + local.get $2 i32.sub call $~lib/memory/memory.fill end @@ -4061,17 +3979,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -4217,19 +4135,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -4244,7 +4162,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -4255,10 +4173,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -4266,10 +4184,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -4280,7 +4198,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -4310,17 +4228,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -4335,7 +4253,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -4346,10 +4264,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -4357,10 +4275,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -4371,7 +4289,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -4397,17 +4315,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -4422,7 +4340,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -4433,10 +4351,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -4444,10 +4362,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -4458,7 +4376,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -4495,131 +4413,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -4636,59 +4532,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -4705,7 +4595,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -4716,11 +4606,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -4734,17 +4624,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -5916,7 +5806,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -5925,28 +5815,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 @@ -6128,7 +6018,7 @@ block $__inlined_func$~lib/math/NativeMathf.mod (result f32) local.get $0 i32.reinterpret_f32 - local.tee $1 + local.tee $3 i32.const 23 i32.shr_u i32.const 255 @@ -6145,37 +6035,33 @@ f32.div br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $1 + local.get $3 i32.const 1 i32.shl - local.tee $3 + local.tee $1 i32.const -2147483648 i32.le_u if local.get $0 - local.get $3 + local.get $1 i32.const -2147483648 i32.ne f32.convert_i32_u f32.mul br $__inlined_func$~lib/math/NativeMathf.mod end - local.get $1 - i32.const -2147483648 - i32.and - local.set $4 local.get $2 if (result i32) - local.get $1 + local.get $3 i32.const 8388607 i32.and i32.const 8388608 i32.or else - local.get $1 + local.get $3 i32.const 1 local.get $2 - local.get $1 + local.get $3 i32.const 9 i32.shl i32.clz @@ -6240,32 +6126,31 @@ i32.const 8 i32.shl i32.clz - local.tee $3 + local.tee $4 i32.sub local.set $2 - local.get $1 local.get $3 + i32.const -2147483648 + i32.and + local.get $1 + local.get $4 i32.shl - local.set $1 + local.tee $1 + i32.const 8388608 + i32.sub + local.get $2 + i32.const 23 + i32.shl + i32.or + local.get $1 + i32.const 1 + local.get $2 + i32.sub + i32.shr_u local.get $2 i32.const 0 i32.gt_s - if (result i32) - local.get $1 - i32.const 8388608 - i32.sub - local.get $2 - i32.const 23 - i32.shl - i32.or - else - local.get $1 - i32.const 1 - local.get $2 - i32.sub - i32.shr_u - end - local.get $4 + select i32.or f32.reinterpret_i32 end @@ -6280,7 +6165,7 @@ block $__inlined_func$~lib/math/NativeMath.mod (result f64) local.get $0 i64.reinterpret_f64 - local.tee $3 + local.tee $5 i64.const 52 i64.shr_u i64.const 2047 @@ -6297,32 +6182,28 @@ f64.div br $__inlined_func$~lib/math/NativeMath.mod end - local.get $3 + local.get $5 i64.const 1 i64.shl - local.tee $5 + local.tee $3 i64.const -9223372036854775808 i64.le_u if local.get $0 - local.get $5 + local.get $3 i64.const -9223372036854775808 i64.ne f64.convert_i32_u f64.mul br $__inlined_func$~lib/math/NativeMath.mod end - local.get $3 - i64.const 63 - i64.shr_u - local.set $6 local.get $4 i64.eqz if (result i64) - local.get $3 + local.get $5 i64.const 1 local.get $4 - local.get $3 + local.get $5 i64.const 12 i64.shl i64.clz @@ -6331,7 +6212,7 @@ i64.sub i64.shl else - local.get $3 + local.get $5 i64.const 4503599627370495 i64.and i64.const 4503599627370496 @@ -6393,35 +6274,34 @@ i64.const 11 i64.shl i64.clz - local.tee $5 + local.tee $4 i64.sub - local.set $4 - local.get $3 + local.set $6 local.get $5 + i64.const 63 + i64.shr_u + i64.const 63 i64.shl - local.set $3 + local.get $3 local.get $4 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.sub - local.get $4 - i64.const 52 - i64.shl - i64.or - else - local.get $3 - i64.const 1 - local.get $4 - i64.sub - i64.shr_u - end + i64.shl + local.tee $3 + i64.const 4503599627370496 + i64.sub local.get $6 - i64.const 63 + i64.const 52 i64.shl i64.or + local.get $3 + i64.const 1 + local.get $6 + i64.sub + i64.shr_u + local.get $6 + i64.const 0 + i64.gt_s + select + i64.or f64.reinterpret_i64 end f64.const 0 @@ -6429,79 +6309,92 @@ ) (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) local.get $0 i32.load offset=4 - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.tee $2 + local.tee $5 i32.const 1 i32.gt_u if - local.get $2 + local.get $5 i32.const 1 i32.shr_u - local.set $8 - local.get $2 + local.set $4 + local.get $5 i32.const 8 i32.sub - local.set $3 + local.set $6 loop $while-continue|0 - local.get $8 + local.get $4 local.get $1 i32.const 7 i32.add i32.gt_u if local.get $1 - local.get $5 + local.get $3 i32.add - local.tee $4 + local.tee $7 i64.load - local.tee $6 + local.tee $2 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $6 + local.get $2 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.set $6 - local.get $4 + local.tee $2 + i64.const 16 + i64.shr_u + i64.const 281470681808895 + i64.and + local.get $2 + i64.const 281470681808895 + i64.and + i64.const 16 + i64.shl + i64.or + i64.const 32 + i64.rotr + local.set $2 + local.get $7 local.get $3 - local.get $5 + local.get $6 i32.add local.get $1 i32.sub - local.tee $4 - i64.load local.tee $7 + i64.load + local.tee $8 i64.const 8 i64.shr_u i64.const 71777214294589695 i64.and - local.get $7 + local.get $8 i64.const 71777214294589695 i64.and i64.const 8 i64.shl i64.or - local.tee $7 + local.tee $8 i64.const 16 i64.shr_u i64.const 281470681808895 i64.and - local.get $7 + local.get $8 i64.const 281470681808895 i64.and i64.const 16 @@ -6510,20 +6403,8 @@ i64.const 32 i64.rotr i64.store - local.get $4 - local.get $6 - i64.const 16 - i64.shr_u - i64.const 281470681808895 - i64.and - local.get $6 - i64.const 281470681808895 - i64.and - i64.const 16 - i64.shl - i64.or - i64.const 32 - i64.rotr + local.get $7 + local.get $2 i64.store local.get $1 i32.const 8 @@ -6532,32 +6413,32 @@ br $while-continue|0 end end - local.get $2 + local.get $5 i32.const 1 i32.sub - local.set $2 + local.set $5 loop $while-continue|1 local.get $1 - local.get $8 + local.get $4 i32.lt_u if local.get $1 - local.get $5 + local.get $3 i32.add - local.tee $3 + local.tee $6 i32.load8_u - local.set $4 - local.get $3 - local.get $2 + local.set $7 + local.get $6 + local.get $5 local.get $1 i32.sub - local.get $5 + local.get $3 i32.add - local.tee $3 + local.tee $6 i32.load8_u i32.store8 - local.get $3 - local.get $4 + local.get $6 + local.get $7 i32.store8 local.get $1 i32.const 1 @@ -6577,50 +6458,49 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) local.get $0 i32.load offset=4 - local.set $3 + local.set $2 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $2 + local.tee $4 i32.const 1 i32.gt_u if - local.get $2 + local.get $4 i32.const 1 i32.shr_u - local.set $7 - local.get $2 + local.set $3 + local.get $4 i32.const 2 i32.sub - local.set $4 + local.set $5 loop $while-continue|0 - local.get $7 + local.get $3 local.get $1 i32.const 1 i32.add i32.gt_u if - local.get $4 + local.get $5 local.get $1 i32.sub i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add - local.tee $5 + local.tee $6 i32.load i32.const 16 i32.rotr - local.set $8 - local.get $5 + local.set $7 + local.get $6 local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add local.tee $6 i32.load @@ -6628,7 +6508,7 @@ i32.rotr i32.store local.get $6 - local.get $8 + local.get $7 i32.store local.get $1 i32.const 2 @@ -6637,36 +6517,36 @@ br $while-continue|0 end end - local.get $2 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.lt_u if local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add - local.tee $2 + local.tee $5 i32.load16_u - local.set $4 - local.get $2 - local.get $6 + local.set $6 + local.get $5 + local.get $4 local.get $1 i32.sub i32.const 1 i32.shl - local.get $3 + local.get $2 i32.add local.tee $5 i32.load16_u i32.store16 local.get $5 - local.get $4 + local.get $6 i32.store16 local.get $1 i32.const 1 @@ -6700,66 +6580,64 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Int8Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.eqz @@ -6790,24 +6668,24 @@ block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 11 @@ -6817,7 +6695,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -6838,37 +6716,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -6889,37 +6767,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -6940,37 +6818,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -6991,37 +6869,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 3 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -7042,37 +6920,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 4 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -7093,37 +6971,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 10 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -7141,8 +7019,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 local.get $2 i32.load offset=8 local.tee $3 @@ -7151,44 +7029,43 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -7202,42 +7079,43 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.eqz @@ -7245,7 +7123,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -7263,43 +7141,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -7308,7 +7185,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -7328,43 +7205,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -7373,7 +7249,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -7393,43 +7269,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -7438,7 +7313,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -7459,7 +7334,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 local.tee $0 i32.eqz @@ -7475,15 +7351,15 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 @@ -7493,7 +7369,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -7512,12 +7388,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -7529,25 +7405,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -7566,12 +7442,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -7583,25 +7459,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -7620,12 +7496,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -7637,25 +7513,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -7673,44 +7549,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -7722,44 +7597,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -7775,14 +7649,14 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Int8Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7790,28 +7664,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -7832,8 +7706,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7841,28 +7715,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -7881,8 +7755,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7890,28 +7764,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -7932,8 +7806,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7941,28 +7815,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -7983,8 +7857,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -7992,28 +7866,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -8034,8 +7908,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -8043,28 +7917,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -8085,8 +7959,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -8094,28 +7968,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -8136,22 +8010,22 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -8161,12 +8035,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -8210,67 +8084,65 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint8Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.eqz @@ -8301,24 +8173,24 @@ block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 11 @@ -8328,7 +8200,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -8349,37 +8221,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -8400,37 +8272,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -8451,37 +8323,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -8502,37 +8374,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 3 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -8553,37 +8425,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 4 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -8604,37 +8476,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 10 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -8652,8 +8524,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $2 i32.load offset=8 local.tee $3 @@ -8662,44 +8534,43 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -8713,42 +8584,43 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.eqz @@ -8756,7 +8628,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -8774,43 +8646,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -8819,7 +8690,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -8839,43 +8710,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -8884,7 +8754,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -8904,43 +8774,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -8949,7 +8818,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -8970,7 +8839,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 local.tee $0 i32.eqz @@ -8986,15 +8856,15 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 @@ -9004,7 +8874,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -9023,12 +8893,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -9040,25 +8910,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -9077,12 +8947,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -9094,25 +8964,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -9131,12 +9001,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -9148,25 +9018,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -9184,44 +9054,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -9233,44 +9102,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -9285,14 +9153,14 @@ local.get $2 i32.const 9 call $~lib/typedarray/Uint8Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9300,28 +9168,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -9342,8 +9210,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9351,28 +9219,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -9391,8 +9259,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9400,28 +9268,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -9442,8 +9310,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9451,28 +9319,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -9493,8 +9361,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9502,28 +9370,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -9544,8 +9412,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -9553,28 +9421,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -9595,8 +9463,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -9604,28 +9472,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -9646,22 +9514,22 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -9671,12 +9539,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -9720,67 +9588,65 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.eqz @@ -9811,24 +9677,24 @@ block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 11 @@ -9838,7 +9704,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -9859,37 +9725,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 255 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -9910,37 +9776,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 0 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -9961,37 +9827,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 2 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -10012,37 +9878,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 3 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -10063,37 +9929,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 4 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -10114,37 +9980,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $2 i32.load offset=8 - local.tee $3 + local.tee $4 i32.const 10 i32.le_s i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -10162,8 +10028,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $2 i32.load offset=8 local.tee $3 @@ -10172,44 +10038,43 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -10223,42 +10088,43 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.eqz @@ -10266,7 +10132,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -10284,43 +10150,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 11 @@ -10329,7 +10194,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -10349,43 +10214,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 255 @@ -10394,7 +10258,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -10414,43 +10278,42 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - local.get $4 + local.get $1 + local.get $2 i32.add i32.load8_u i32.const 3 @@ -10459,7 +10322,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -10480,7 +10343,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 local.tee $0 i32.eqz @@ -10496,15 +10360,15 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 @@ -10514,7 +10378,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -10533,12 +10397,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -10550,25 +10414,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -10587,12 +10451,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -10604,25 +10468,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -10641,12 +10505,12 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $2 i32.load offset=8 local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -10658,25 +10522,25 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s if local.get $0 local.tee $1 - local.get $4 + local.get $3 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -10694,44 +10558,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -10743,44 +10606,43 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 local.get $2 i32.load offset=8 - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 - local.get $4 + local.get $1 i32.add i32.load8_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -10795,14 +10657,14 @@ local.get $2 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10810,28 +10672,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -10852,8 +10714,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10861,28 +10723,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -10901,8 +10763,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10910,28 +10772,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -10952,8 +10814,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -10961,28 +10823,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -11003,8 +10865,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -11012,28 +10874,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -11054,8 +10916,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + local.get $4 i32.load offset=8 local.tee $3 i32.const 0 @@ -11063,28 +10925,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -11105,8 +10967,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + local.get $4 i32.load offset=8 local.tee $3 i32.const 1 @@ -11114,28 +10976,28 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s if local.get $0 local.tee $1 - local.get $4 + local.get $2 i32.add i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -11156,22 +11018,22 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + local.get $4 i32.load offset=8 - local.tee $4 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -11181,12 +11043,12 @@ i32.load8_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -11208,12 +11070,92 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + end + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + i32.const -1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + drop + local.get $1 + local.set $2 + local.get $3 + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.get $3 + local.get $3 + local.get $4 + i32.ge_s + select + local.get $3 + i32.const 0 + i32.lt_u + select + local.set $1 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.load16_u + local.get $2 + i32.const 65535 + i32.and + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 + end + end + i32.const -1 + end + ) (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -11230,84 +11172,81 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 7728 i32.store - local.get $1 + local.get $0 i32.const 7740 i32.load - local.tee $1 + local.tee $0 call $~lib/typedarray/Int16Array#constructor - local.tee $2 + local.tee $3 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.extend16_s call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|0 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -11317,49 +11256,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|02 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11371,49 +11307,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|05 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11425,49 +11358,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|08 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -11479,50 +11409,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|011 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -11534,50 +11464,50 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|014 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -11589,50 +11519,50 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|017 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11644,50 +11574,50 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|020 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -11699,58 +11629,58 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $3 + local.get $4 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|023 - local.get $0 - local.get $3 - i32.lt_s + local.get $1 + local.get $4 + i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -11763,62 +11693,9 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|00 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|00 - end - end - i32.const -1 - local.set $1 - end - local.get $1 + local.get $3 + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -11829,63 +11706,9 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|06 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 11 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|06 - end - end - i32.const -1 - local.set $1 - end - local.get $1 + local.get $3 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -11898,63 +11721,9 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 + local.get $3 i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|012 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 65535 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|012 - end - end - i32.const -1 - local.set $1 - end - local.get $1 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -11967,63 +11736,9 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|018 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 3 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|018 - end - end - i32.const -1 - local.set $1 - end - local.get $1 + local.get $3 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const 3 i32.ne if @@ -12036,14 +11751,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 i32.const 1 i32.sub @@ -12052,29 +11767,28 @@ i32.const 4 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 + local.set $0 loop $while-continue|024 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|024 end end @@ -12094,14 +11808,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 local.get $0 i32.const 1 i32.sub @@ -12110,30 +11824,29 @@ i32.const 3 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|027 - local.get $0 + local.set $0 + loop $while-continue|03 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|03 end end i32.const -1 @@ -12152,14 +11865,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 local.get $0 i32.const 1 i32.sub @@ -12168,30 +11881,29 @@ i32.const 2 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|030 - local.get $0 + local.set $0 + loop $while-continue|07 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|030 + local.set $1 + br $while-continue|07 end end i32.const -1 @@ -12210,14 +11922,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 local.get $0 i32.const 1 i32.sub @@ -12226,30 +11938,29 @@ i32.const 100 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|033 - local.get $0 + local.set $0 + loop $while-continue|01125 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.09 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|01125 end end i32.const -1 @@ -12268,41 +11979,40 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|036 - local.get $0 + local.set $0 + loop $while-continue|015 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|036 + local.set $1 + br $while-continue|015 end end i32.const -1 @@ -12321,41 +12031,40 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|039 - local.get $0 + local.set $0 + loop $while-continue|019 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|039 + local.set $1 + br $while-continue|019 end end i32.const -1 @@ -12373,36 +12082,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 9 call $~lib/typedarray/Int16Array#subarray - local.tee $2 + local.tee $1 i32.store offset=8 - i32.const 0 - local.set $0 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|042 - local.get $0 + loop $while-continue|028 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12410,18 +12114,18 @@ i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.027 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|042 + local.set $2 + br $while-continue|028 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12433,30 +12137,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|045 - local.get $0 + loop $while-continue|031 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12464,18 +12165,18 @@ i32.load16_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.030 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|045 + local.set $2 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -12485,30 +12186,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|048 - local.get $0 + loop $while-continue|034 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12516,18 +12214,18 @@ i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.033 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|048 + local.set $2 + br $while-continue|034 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -12539,30 +12237,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|051 - local.get $0 + loop $while-continue|037 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12570,18 +12265,18 @@ i32.load16_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.036 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|051 + local.set $2 + br $while-continue|037 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12593,30 +12288,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|054 - local.get $0 + loop $while-continue|040 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12624,18 +12316,18 @@ i32.load16_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.039 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|054 + local.set $2 + br $while-continue|040 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12647,30 +12339,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|057 - local.get $0 + loop $while-continue|043 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12678,18 +12367,18 @@ i32.load16_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.042 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $2 + br $while-continue|043 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12701,11 +12390,11 @@ unreachable end i32.const 1 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u @@ -12715,17 +12404,17 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|060 - local.get $0 + loop $while-continue|046 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -12733,18 +12422,18 @@ i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.045 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|060 + local.set $2 + br $while-continue|046 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -12756,50 +12445,50 @@ unreachable end i32.const 2 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 + local.get $1 i32.load offset=4 - local.set $2 - loop $while-continue|063 - local.get $0 - local.get $4 + local.set $1 + loop $while-continue|049 + local.get $2 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.048 + local.get $2 i32.const 1 i32.add - local.set $0 - br $while-continue|063 + local.set $2 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12821,6 +12510,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -12837,85 +12527,82 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 7728 i32.store - local.get $1 + local.get $0 i32.const 7740 i32.load - local.tee $1 + local.tee $0 call $~lib/typedarray/Uint16Array#constructor - local.tee $2 + local.tee $3 i32.store offset=4 loop $for-loop|0 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|0 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -12925,49 +12612,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|02 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|02 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -12979,49 +12663,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|05 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.04 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|05 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -13033,49 +12714,46 @@ unreachable end i32.const 0 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|08 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.07 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|08 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -13087,50 +12765,50 @@ unreachable end i32.const 2 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|011 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.010 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|011 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -13142,50 +12820,50 @@ unreachable end i32.const 3 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|014 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|014 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if @@ -13197,50 +12875,50 @@ unreachable end i32.const 4 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|017 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.016 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -13252,50 +12930,50 @@ unreachable end i32.const 10 - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|020 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|020 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -13307,58 +12985,58 @@ unreachable end i32.const -1 - local.set $1 + local.set $0 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $4 select br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $3 + local.get $4 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 + local.set $5 loop $while-continue|023 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.lt_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.shl - local.get $4 + local.get $5 i32.add i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.022 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -13371,377 +13049,160 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 - i32.load offset=8 + local.get $3 + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 + global.set $~argumentsLength + local.get $3 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $3 + i32.const -1 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 615 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $~argumentsLength + local.get $3 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 616 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + i32.const 4 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + i32.const 4 + i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|00 - local.get $0 + local.set $0 + loop $while-continue|024 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u - i32.eqz + i32.const 3 + i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|00 + local.set $1 + br $while-continue|024 end end i32.const -1 local.set $1 end local.get $1 + i32.const 3 + i32.ne if i32.const 0 i32.const 1568 - i32.const 613 + i32.const 617 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 - local.get $4 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + i32.const 3 local.get $0 - local.get $0 - local.get $4 - i32.ge_s + i32.const 3 + i32.le_u select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|06 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 11 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|06 - end - end - i32.const -1 local.set $1 - end - local.get $1 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|012 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 65535 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.011 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|012 - end - end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 615 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 - local.get $4 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 - local.get $0 - local.get $4 - i32.add - local.get $4 - i32.const 1 - i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s - select local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|018 - local.get $0 + loop $while-continue|03 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 3 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 local.get $1 i32.const 1 - i32.sub - local.set $0 - br $while-continue|018 - end - end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 616 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $0 - i32.const 1 - i32.sub - i32.const 4 - local.get $0 - i32.const 4 - i32.le_u - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|024 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.tee $1 - i32.const 1 i32.shl - local.get $4 - i32.add - i32.load16_u - i32.const 3 - i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.019 - local.get $1 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|024 - end - end - i32.const -1 - local.set $1 - end - local.get $1 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 617 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 - local.get $0 - i32.const 1 - i32.sub - i32.const 3 - local.get $0 - i32.const 3 - i32.le_u - select - local.set $0 - local.get $2 - i32.load offset=4 - local.set $4 - loop $while-continue|027 - local.get $0 - i32.const 0 - i32.ge_s - if local.get $0 - local.tee $1 - i32.const 1 - i32.shl - local.get $4 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.01 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|027 + local.set $1 + br $while-continue|03 end end i32.const -1 @@ -13760,14 +13221,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 local.get $0 i32.const 1 i32.sub @@ -13776,30 +13237,29 @@ i32.const 2 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|030 - local.get $0 + local.set $0 + loop $while-continue|07 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.05 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|030 + local.set $1 + br $while-continue|07 end end i32.const -1 @@ -13818,14 +13278,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 local.get $0 i32.const 1 i32.sub @@ -13834,30 +13294,29 @@ i32.const 100 i32.le_u select - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|033 - local.get $0 + local.set $0 + loop $while-continue|01125 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.09 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|033 + local.set $1 + br $while-continue|01125 end end i32.const -1 @@ -13876,41 +13335,40 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 local.get $0 i32.const 10 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|036 - local.get $0 + local.set $0 + loop $while-continue|015 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.035 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.013 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|036 + local.set $1 + br $while-continue|015 end end i32.const -1 @@ -13929,41 +13387,40 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 local.get $0 i32.const 11 i32.sub - local.set $0 - local.get $2 + local.set $1 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|039 - local.get $0 + local.set $0 + loop $while-continue|019 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 1 i32.shl - local.get $4 + local.get $0 i32.add i32.load16_u i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.038 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.017 local.get $1 i32.const 1 i32.sub - local.set $0 - br $while-continue|039 + local.set $1 + br $while-continue|019 end end i32.const -1 @@ -13981,36 +13438,31 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 9 call $~lib/typedarray/Uint16Array#subarray - local.tee $2 + local.tee $1 i32.store offset=8 - i32.const 0 - local.set $0 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|042 - local.get $0 + loop $while-continue|028 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14018,18 +13470,18 @@ i32.load16_u i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.041 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.027 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|042 + local.set $2 + br $while-continue|028 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14041,30 +13493,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|045 - local.get $0 + loop $while-continue|031 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14072,18 +13521,18 @@ i32.load16_u i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.044 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.030 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|045 + local.set $2 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1568 @@ -14093,30 +13542,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|048 - local.get $0 + loop $while-continue|034 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14124,18 +13570,18 @@ i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.047 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.033 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|048 + local.set $2 + br $while-continue|034 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -14147,30 +13593,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|051 - local.get $0 + loop $while-continue|037 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14178,18 +13621,18 @@ i32.load16_u i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.050 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.036 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|051 + local.set $2 + br $while-continue|037 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14201,30 +13644,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|054 - local.get $0 + loop $while-continue|040 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14232,18 +13672,18 @@ i32.load16_u i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.053 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.039 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|054 + local.set $2 + br $while-continue|040 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14255,30 +13695,27 @@ unreachable end i32.const 0 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|057 - local.get $0 + loop $while-continue|043 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14286,18 +13723,18 @@ i32.load16_u i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.056 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.042 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|057 + local.set $2 + br $while-continue|043 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14309,11 +13746,11 @@ unreachable end i32.const 1 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u @@ -14323,17 +13760,17 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 + local.get $1 i32.load offset=4 local.set $4 - loop $while-continue|060 - local.get $0 + loop $while-continue|046 + local.get $2 local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl local.get $4 @@ -14341,18 +13778,18 @@ i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.059 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.045 + local.get $0 i32.const 1 i32.add - local.set $0 - br $while-continue|060 + local.set $2 + br $while-continue|046 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -14364,50 +13801,50 @@ unreachable end i32.const 2 - local.set $0 + local.set $2 i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 + local.get $1 i32.load offset=4 - local.set $2 - loop $while-continue|063 - local.get $0 - local.get $4 + local.set $1 + loop $while-continue|049 + local.get $2 + local.get $3 i32.lt_s if - local.get $0 - local.tee $1 + local.get $2 + local.tee $0 i32.const 1 i32.shl - local.get $2 + local.get $1 i32.add i32.load16_u i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.062 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.048 + local.get $2 i32.const 1 i32.add - local.set $0 - br $while-continue|063 + local.set $2 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -14445,68 +13882,63 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 7728 i32.store - local.get $1 + local.get $3 i32.const 7740 i32.load - local.tee $1 - call $~lib/typedarray/Int32Array#constructor local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.eqz @@ -14535,29 +13967,26 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.01 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $2 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 11 @@ -14567,7 +13996,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -14588,40 +14017,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $2 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const -1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -14642,40 +14068,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $2 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -14696,41 +14119,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $2 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -14751,41 +14174,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $2 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -14806,41 +14229,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $2 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -14861,41 +14284,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $2 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -14913,20 +14336,20 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $2 i32.const 100 i32.sub local.tee $1 @@ -14936,35 +14359,34 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -14977,52 +14399,50 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|00 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15030,9 +14450,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -15043,53 +14461,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|06 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.05 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15097,9 +14513,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -15112,53 +14526,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|012 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const -1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.011 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15166,9 +14578,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -15181,53 +14591,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|018 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.017 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -15235,9 +14643,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const 3 i32.ne if @@ -15251,7 +14657,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.019 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -15267,10 +14673,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $2 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -15279,7 +14685,7 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 @@ -15289,7 +14695,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -15308,14 +14714,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -15325,10 +14731,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $2 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -15337,17 +14743,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -15366,14 +14772,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -15383,10 +14789,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $2 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -15395,17 +14801,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -15424,14 +14830,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -15441,10 +14847,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $2 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -15453,17 +14859,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -15481,48 +14887,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -15534,48 +14939,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -15587,50 +14991,47 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 4 i32.const 9 call $~lib/typedarray/Int32Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $3 + loop $while-continue|057 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -15651,40 +15052,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $3 + loop $while-continue|061 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -15703,40 +15101,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $3 + loop $while-continue|065 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -15757,40 +15152,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $3 + loop $while-continue|069 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -15811,40 +15203,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $3 + loop $while-continue|073 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -15865,40 +15254,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $3 + loop $while-continue|077 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -15919,41 +15305,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.le_u i32.const 1 - local.get $3 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $3 + loop $while-continue|081 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -15974,41 +15360,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $2 i32.const 2 i32.le_u i32.const 1 - local.get $4 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 + local.get $4 i32.load offset=4 - local.set $2 - loop $while-continue|063 + local.set $3 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -16052,68 +15438,63 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $1 + local.get $3 i32.const 0 i32.store offset=8 - local.get $1 + local.get $3 i32.const 7728 i32.store - local.get $1 + local.get $3 i32.const 7740 i32.load - local.tee $1 - call $~lib/typedarray/Uint32Array#constructor local.tee $2 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $2 - local.get $0 + local.get $3 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.eqz @@ -16142,29 +15523,26 @@ i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.01 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $2 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 11 @@ -16174,7 +15552,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -16195,40 +15573,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $2 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const -1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -16249,40 +15624,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $2 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -16303,41 +15675,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $2 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -16358,41 +15730,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $2 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -16413,41 +15785,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $2 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -16468,41 +15840,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $2 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -16520,20 +15892,20 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $2 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $2 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $3 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $2 i32.const 100 i32.sub local.tee $1 @@ -16543,35 +15915,34 @@ i32.gt_s select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -16584,52 +15955,50 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|00 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -16637,9 +16006,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 if i32.const 0 i32.const 1568 @@ -16650,53 +16017,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|06 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.05 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -16704,9 +16069,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -16719,53 +16082,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|012 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const -1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.011 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -16773,9 +16134,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const -1 i32.ne if @@ -16788,53 +16147,51 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $3 + local.tee $1 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 - i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 - local.get $4 + local.set $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 (result i32) + i32.const -1 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 + drop local.get $0 - local.get $4 - i32.add - local.get $4 i32.const 1 i32.sub + local.get $2 local.get $0 - local.get $0 - local.get $4 - i32.ge_s - select - local.get $0 - i32.const 0 - i32.lt_s + local.get $2 + i32.le_s select local.set $0 - local.get $2 + local.get $1 i32.load offset=4 - local.set $4 + local.set $1 loop $while-continue|018 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 + local.get $0 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.017 - local.get $1 + drop + local.get $0 i32.const 1 i32.sub local.set $0 @@ -16842,9 +16199,7 @@ end end i32.const -1 - local.set $1 end - local.get $1 i32.const 3 i32.ne if @@ -16858,7 +16213,7 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.019 - local.get $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -16874,10 +16229,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $2 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -16886,7 +16241,7 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 @@ -16896,7 +16251,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -16915,14 +16270,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -16932,10 +16287,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $2 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -16944,17 +16299,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -16973,14 +16328,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -16990,10 +16345,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $2 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -17002,17 +16357,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -17031,14 +16386,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 - local.get $2 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -17048,10 +16403,10 @@ i32.le_u select local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $2 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -17060,17 +16415,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -17088,48 +16443,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -17141,48 +16495,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $2 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 - local.get $2 + local.get $3 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add i32.load i32.const 1 i32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -17194,49 +16547,46 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 9 call $~lib/typedarray/Uint32Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $3 + loop $while-continue|057 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 3 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -17257,40 +16607,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $3 + loop $while-continue|061 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 4 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -17309,40 +16656,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $3 + loop $while-continue|065 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -17363,40 +16707,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $3 + loop $while-continue|069 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 9 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -17417,40 +16758,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $3 + loop $while-continue|073 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 10 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -17471,40 +16809,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $2 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $3 + loop $while-continue|077 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 11 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -17525,41 +16860,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.le_u i32.const 1 - local.get $3 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $3 + loop $while-continue|081 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -17580,41 +16915,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $2 i32.const 2 i32.le_u i32.const 1 - local.get $4 - select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 local.get $2 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 + local.get $4 i32.load offset=4 - local.set $2 - loop $while-continue|063 + local.set $3 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $2 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.const 5 i32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -17658,43 +16993,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Int64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 @@ -17702,25 +17035,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.eqz @@ -17753,25 +17083,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 11 @@ -17781,7 +17108,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -17802,40 +17129,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const -1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -17856,40 +17180,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -17910,41 +17231,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -17965,41 +17286,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -18020,41 +17341,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -18075,41 +17396,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -18127,8 +17448,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 local.get $2 i32.load offset=8 i32.const 3 @@ -18139,46 +17460,45 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -18192,46 +17512,49 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.eqz @@ -18239,7 +17562,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -18257,47 +17580,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 11 @@ -18306,7 +17628,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -18326,47 +17648,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const -1 @@ -18375,7 +17696,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -18395,47 +17716,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 3 @@ -18444,7 +17764,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -18465,7 +17785,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -18483,8 +17804,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -18493,7 +17814,7 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 @@ -18503,7 +17824,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -18522,14 +17843,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -18541,8 +17862,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -18551,17 +17872,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -18580,14 +17901,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -18599,8 +17920,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -18609,17 +17930,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -18638,14 +17959,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -18657,8 +17978,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -18667,17 +17988,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -18695,48 +18016,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -18748,48 +18068,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -18804,27 +18123,24 @@ local.get $2 i32.const 9 call $~lib/typedarray/Int64Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -18833,17 +18149,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -18864,21 +18180,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s @@ -18887,17 +18200,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 4 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -18916,21 +18229,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s @@ -18939,17 +18249,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -18970,21 +18280,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s @@ -18993,17 +18300,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 9 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -19024,21 +18331,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s @@ -19047,17 +18351,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 10 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -19078,21 +18382,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s @@ -19101,17 +18402,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 11 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -19132,8 +18433,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -19143,11 +18444,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s @@ -19156,17 +18457,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -19187,24 +18488,24 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -19216,12 +18517,12 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -19265,43 +18566,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Uint64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 @@ -19309,25 +18608,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.eqz @@ -19360,25 +18656,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 11 @@ -19388,7 +18681,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -19409,40 +18702,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const -1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -19463,40 +18753,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -19517,41 +18804,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -19572,41 +18859,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -19627,41 +18914,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -19682,41 +18969,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -19734,8 +19021,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 local.get $2 i32.load offset=8 i32.const 3 @@ -19746,46 +19033,45 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -19799,46 +19085,49 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.eqz @@ -19846,7 +19135,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -19864,47 +19153,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 11 @@ -19913,7 +19201,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -19933,47 +19221,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const -1 @@ -19982,7 +19269,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -20002,47 +19289,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 3 @@ -20051,7 +19337,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -20072,7 +19358,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -20090,8 +19377,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -20100,7 +19387,7 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 @@ -20110,7 +19397,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -20129,14 +19416,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -20148,8 +19435,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -20158,17 +19445,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -20187,14 +19474,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -20206,8 +19493,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -20216,17 +19503,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -20245,14 +19532,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -20264,8 +19551,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -20274,17 +19561,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -20302,48 +19589,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -20355,48 +19641,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add i64.load i64.const 1 i64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -20411,27 +19696,24 @@ local.get $2 i32.const 9 call $~lib/typedarray/Uint64Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -20440,17 +19722,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 3 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -20471,21 +19753,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s @@ -20494,17 +19773,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 4 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -20523,21 +19802,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s @@ -20546,17 +19822,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -20577,21 +19853,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s @@ -20600,17 +19873,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 9 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -20631,21 +19904,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s @@ -20654,17 +19924,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 10 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -20685,21 +19955,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s @@ -20708,17 +19975,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 11 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -20739,8 +20006,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -20750,11 +20017,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s @@ -20763,17 +20030,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -20794,24 +20061,24 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -20823,12 +20090,12 @@ i64.load i64.const 5 i64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -20872,43 +20139,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Float32Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 @@ -20916,25 +20181,22 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 0 @@ -20968,25 +20230,22 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 11 @@ -20996,7 +20255,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -21017,40 +20276,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const -1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -21071,40 +20327,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -21125,41 +20378,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -21180,41 +20433,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -21235,41 +20488,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -21290,41 +20543,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -21342,8 +20595,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 local.get $2 i32.load offset=8 i32.const 2 @@ -21354,46 +20607,45 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -21407,46 +20659,49 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 0 @@ -21455,7 +20710,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -21473,47 +20728,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 11 @@ -21522,7 +20776,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -21542,47 +20796,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const -1 @@ -21591,7 +20844,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -21611,47 +20864,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 3 @@ -21660,7 +20912,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -21681,7 +20933,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u @@ -21699,8 +20952,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -21709,7 +20962,7 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 @@ -21719,7 +20972,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -21738,14 +20991,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -21757,8 +21010,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -21767,17 +21020,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -21796,14 +21049,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -21815,8 +21068,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -21825,17 +21078,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -21854,14 +21107,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -21873,8 +21126,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -21883,17 +21136,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $3 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -21911,48 +21164,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -21964,48 +21216,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $1 i32.add f32.load f32.const 1 f32.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -22020,27 +21271,24 @@ local.get $2 i32.const 9 call $~lib/typedarray/Float32Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -22049,17 +21297,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 3 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -22080,21 +21328,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s @@ -22103,17 +21348,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 4 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -22132,21 +21377,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s @@ -22155,17 +21397,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -22186,21 +21428,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s @@ -22209,17 +21448,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 9 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -22240,21 +21479,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s @@ -22263,17 +21499,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 10 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -22294,21 +21530,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s @@ -22317,17 +21550,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 11 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -22348,8 +21581,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u @@ -22359,11 +21592,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s @@ -22372,17 +21605,17 @@ local.tee $1 i32.const 2 i32.shl - local.get $4 + local.get $2 i32.add f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -22403,24 +21636,24 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -22432,12 +21665,12 @@ f32.load f32.const 5 f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -22481,43 +21714,41 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i64.const 0 i64.store - local.get $1 + local.get $2 i32.const 0 i32.store offset=8 - local.get $1 + local.get $2 i32.const 7728 i32.store - local.get $1 + local.get $2 i32.const 7740 i32.load - local.tee $1 + local.tee $3 call $~lib/typedarray/Float64Array#constructor local.tee $2 i32.store offset=4 loop $for-loop|0 - local.get $0 local.get $1 + local.get $3 i32.lt_s if local.get $2 - local.get $0 + local.get $1 i32.const 7728 - local.get $0 + local.get $1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - i32.const 0 - local.set $0 i32.const -1 local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 @@ -22525,25 +21756,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $2 i32.load offset=4 - local.set $4 + local.set $3 loop $while-continue|0 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 0 @@ -22577,25 +21805,22 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.01 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|02 + local.set $3 + loop $while-continue|03 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 11 @@ -22605,7 +21830,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|02 + br $while-continue|03 end end i32.const -1 @@ -22626,40 +21851,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|05 + local.set $3 + loop $while-continue|07 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const -1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.04 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|05 + br $while-continue|07 end end i32.const -1 @@ -22680,40 +21902,37 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 - i32.const 0 - local.get $3 - select + local.tee $4 i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|08 + local.set $3 + loop $while-continue|011 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.07 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.09 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|08 + br $while-continue|011 end end i32.const -1 @@ -22734,41 +21953,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 2 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|011 + local.set $3 + loop $while-continue|015 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.010 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|011 + br $while-continue|015 end end i32.const -1 @@ -22789,41 +22008,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 3 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|014 + local.set $3 + loop $while-continue|019 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.013 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|014 + br $while-continue|019 end end i32.const -1 @@ -22844,41 +22063,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 4 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|017 + local.set $3 + loop $while-continue|023 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.016 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.021 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|023 end end i32.const -1 @@ -22899,41 +22118,41 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $3 + local.tee $4 i32.const 10 i32.le_u i32.const 1 - local.get $3 + local.get $4 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|020 + local.set $3 + loop $while-continue|027 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $0 local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.025 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|020 + br $while-continue|027 end end i32.const -1 @@ -22951,8 +22170,8 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 local.get $2 i32.load offset=8 i32.const 3 @@ -22963,46 +22182,45 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 local.get $3 i32.const 100 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|023 + local.set $1 + loop $while-continue|031 local.get $0 local.get $3 i32.lt_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.022 - local.get $1 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|023 + br $while-continue|031 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -23016,46 +22234,49 @@ i32.const 1 global.set $~argumentsLength local.get $2 + local.tee $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.set $3 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $2 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 - i32.ge_s + local.get $3 + local.get $2 + local.get $3 + i32.le_s select - local.get $0 + local.get $3 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|00 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 0 @@ -23064,7 +22285,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|00 end end @@ -23082,47 +22303,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.05 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 11 @@ -23131,7 +22351,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end @@ -23151,47 +22371,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.011 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|012 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const -1 @@ -23200,7 +22419,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|012 end end @@ -23220,47 +22439,46 @@ end i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 - local.set $0 + local.tee $3 + local.set $2 i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $4 + local.get $3 i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.017 - local.get $0 - local.get $4 + local.get $2 + local.get $3 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $4 + local.get $2 + local.get $2 + local.get $3 i32.ge_s select - local.get $0 + local.get $2 i32.const 0 i32.lt_s select - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.load offset=4 - local.set $4 + local.set $2 loop $while-continue|018 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 3 @@ -23269,7 +22487,7 @@ local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|018 end end @@ -23290,7 +22508,8 @@ i32.const -1 local.set $1 block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.019 - local.get $2 + local.get $0 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u @@ -23308,8 +22527,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|024 + local.set $3 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -23318,7 +22537,7 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 @@ -23328,7 +22547,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|024 + br $while-continue|033 end end i32.const -1 @@ -23347,14 +22566,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 local.get $0 i32.const 1 i32.sub @@ -23366,8 +22585,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|027 + local.set $3 + loop $while-continue|037 local.get $0 i32.const 0 i32.ge_s @@ -23376,17 +22595,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.026 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|037 end end i32.const -1 @@ -23405,14 +22624,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 local.get $0 i32.const 1 i32.sub @@ -23424,8 +22643,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|030 + local.set $3 + loop $while-continue|041 local.get $0 i32.const 0 i32.ge_s @@ -23434,17 +22653,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.029 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.039 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|030 + br $while-continue|041 end end i32.const -1 @@ -23463,14 +22682,14 @@ end i32.const -1 local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u local.tee $0 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 local.get $0 i32.const 1 i32.sub @@ -23482,8 +22701,8 @@ local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|033 + local.set $3 + loop $while-continue|045 local.get $0 i32.const 0 i32.ge_s @@ -23492,17 +22711,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $3 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.032 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.043 local.get $1 i32.const 1 i32.sub local.set $0 - br $while-continue|033 + br $while-continue|045 end end i32.const -1 @@ -23520,48 +22739,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + local.get $1 i32.const 10 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|036 + local.set $1 + loop $while-continue|049 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.035 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|036 + br $while-continue|049 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne if @@ -23573,48 +22791,47 @@ unreachable end i32.const -1 - local.set $1 - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 + local.set $0 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 - local.get $0 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 + local.get $1 i32.const 11 i32.sub local.set $0 local.get $2 i32.load offset=4 - local.set $4 - loop $while-continue|039 + local.set $1 + loop $while-continue|053 local.get $0 i32.const 0 i32.ge_s if local.get $0 - local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $1 i32.add f64.load f64.const 1 f64.eq - br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.038 - local.get $1 + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.051 + local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|039 + br $while-continue|053 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -23630,27 +22847,24 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Float64Array#subarray - local.tee $2 + local.tee $4 i32.store offset=8 i32.const 0 local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|042 + local.set $2 + loop $while-continue|057 local.get $0 local.get $3 i32.lt_s @@ -23659,17 +22873,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 3 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.041 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.055 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|042 + br $while-continue|057 end end i32.const -1 @@ -23690,21 +22904,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|045 + local.set $2 + loop $while-continue|061 local.get $0 local.get $3 i32.lt_s @@ -23713,17 +22924,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 4 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.044 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|045 + br $while-continue|061 end end i32.const -1 @@ -23742,21 +22953,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|048 + local.set $2 + loop $while-continue|065 local.get $0 local.get $3 i32.lt_s @@ -23765,17 +22973,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.047 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.063 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|048 + br $while-continue|065 end end i32.const -1 @@ -23796,21 +23004,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|051 + local.set $2 + loop $while-continue|069 local.get $0 local.get $3 i32.lt_s @@ -23819,17 +23024,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 9 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.050 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.067 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|051 + br $while-continue|069 end end i32.const -1 @@ -23850,21 +23055,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|054 + local.set $2 + loop $while-continue|073 local.get $0 local.get $3 i32.lt_s @@ -23873,17 +23075,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 10 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.053 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.071 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|054 + br $while-continue|073 end end i32.const -1 @@ -23904,21 +23106,18 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|057 + local.set $2 + loop $while-continue|077 local.get $0 local.get $3 i32.lt_s @@ -23927,17 +23126,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 11 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.056 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.075 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|057 + br $while-continue|077 end end i32.const -1 @@ -23958,8 +23157,8 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u @@ -23969,11 +23168,11 @@ i32.const 1 local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 + local.get $4 i32.load offset=4 - local.set $4 - loop $while-continue|060 + local.set $2 + loop $while-continue|081 local.get $0 local.get $3 i32.lt_s @@ -23982,17 +23181,17 @@ local.tee $1 i32.const 3 i32.shl - local.get $4 + local.get $2 i32.add f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.059 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.079 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|060 + br $while-continue|081 end end i32.const -1 @@ -24013,24 +23212,24 @@ local.set $0 i32.const -1 local.set $1 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 - local.get $2 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $4 + local.tee $3 i32.const 2 i32.le_u i32.const 1 - local.get $4 + local.get $3 select - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 - local.get $2 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 + local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|063 + loop $while-continue|085 local.get $0 - local.get $4 + local.get $3 i32.lt_s if local.get $0 @@ -24042,12 +23241,12 @@ f64.load f64.const 5 f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.062 + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.083 local.get $1 i32.const 1 i32.add local.set $0 - br $while-continue|063 + br $while-continue|085 end end i32.const -1 @@ -24259,15 +23458,14 @@ i32.add end end + local.get $2 + i32.add local.set $1 local.get $0 local.get $3 local.get $1 - local.get $2 - i32.add - local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $1 ) (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24276,37 +23474,35 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $1 - i32.const 0 - local.set $0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 0 + local.set $0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24315,88 +23511,87 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load8_s call $~lib/util/number/itoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add - local.get $3 local.get $5 i32.add + local.get $1 + local.get $4 + i32.add i32.load8_s call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 - local.get $3 + local.get $4 + local.get $6 i32.add i32.load8_s call $~lib/util/number/itoa_buffered @@ -24405,7 +23600,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -24415,16 +23610,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24452,7 +23646,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -24466,32 +23660,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -24508,29 +23701,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -24563,59 +23756,59 @@ local.get $1 i32.const 255 i32.and - local.tee $2 local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24624,37 +23817,35 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $1 - i32.const 0 - local.set $0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 0 + local.set $0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24663,88 +23854,87 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load8_u call $~lib/util/number/utoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add - local.get $3 local.get $5 i32.add + local.get $1 + local.get $4 + i32.add i32.load8_u call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 - local.get $3 + local.get $4 + local.get $6 i32.add i32.load8_u call $~lib/util/number/itoa_buffered @@ -24753,7 +23943,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -24763,16 +23953,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -24860,15 +24049,14 @@ i32.add end end + local.get $2 + i32.add local.set $1 local.get $0 local.get $3 local.get $1 - local.get $2 - i32.add - local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $0 + local.get $1 ) (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) (local $1 i32) @@ -24877,39 +24065,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + i32.shr_u + i32.const 0 + local.set $0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -24918,92 +24104,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load16_s call $~lib/util/number/itoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_s call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_s call $~lib/util/number/itoa_buffered @@ -25012,7 +24197,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -25022,16 +24207,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -25054,59 +24238,59 @@ local.get $1 i32.const 65535 i32.and - local.tee $2 local.tee $1 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $2 i32.const 100000000 i32.ge_u i32.add end end - local.set $1 + local.set $2 local.get $0 - local.get $2 local.get $1 + local.get $2 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 ) (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) (local $1 i32) @@ -25115,39 +24299,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + i32.shr_u + i32.const 0 + local.set $0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25156,92 +24338,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load16_u call $~lib/util/number/utoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_u call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.load16_u call $~lib/util/number/itoa_buffered @@ -25250,7 +24431,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -25260,16 +24441,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -25307,47 +24487,46 @@ local.get $0 local.get $1 local.get $1 - local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -25366,39 +24545,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 0 + local.set $0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25407,92 +24584,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load call $~lib/util/number/itoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 11 i32.add i32.mul i32.const 11 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load call $~lib/util/number/itoa_buffered @@ -25501,7 +24677,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -25511,16 +24687,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -25538,47 +24713,46 @@ local.get $0 local.get $1 local.get $1 - local.tee $0 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -25595,39 +24769,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 0 + local.set $0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -25636,92 +24808,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 i32.load call $~lib/util/number/utoa32 local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 10 i32.add i32.mul i32.const 10 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add i32.load call $~lib/util/number/itoa_buffered @@ -25730,7 +24901,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -25740,16 +24911,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/util/number/utoa64_dec_lut (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -25846,7 +25016,7 @@ local.get $1 i64.const 0 i64.lt_s - local.tee $3 + local.tee $2 if local.get $0 i32.const 45 @@ -25860,7 +25030,7 @@ i64.const 10 i64.lt_u if - local.get $3 + local.get $2 i32.const 1 i32.shl local.get $0 @@ -25869,7 +25039,7 @@ i64.const 48 i64.or i64.store16 - local.get $3 + local.get $2 i32.const 1 i32.add return @@ -25880,60 +25050,59 @@ if local.get $1 i32.wrap_i64 + local.tee $3 local.tee $4 - local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $4 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $4 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $4 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $4 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $4 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $4 i32.const 100000000 i32.ge_u i32.add end end + local.get $2 + i32.add local.set $2 local.get $0 - local.get $4 - local.get $2 local.get $3 - i32.add - local.tee $0 + local.get $2 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -25988,12 +25157,12 @@ i32.add end end - local.get $3 + local.get $2 i32.add - local.tee $0 + local.tee $2 call $~lib/util/number/utoa64_dec_lut end - local.get $0 + local.get $2 ) (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -26005,7 +25174,7 @@ (local $7 i32) local.get $0 i32.load offset=4 - local.set $5 + local.set $4 local.get $0 i32.load offset=8 i32.const 3 @@ -26029,7 +25198,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $4 + local.tee $7 i32.const 0 i32.lt_s if @@ -26042,10 +25211,10 @@ br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $4 + local.get $7 i32.eqz if - local.get $5 + local.get $4 i64.load i64.extend32_s local.set $2 @@ -26080,7 +25249,7 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.tee $3 + local.tee $1 select local.tee $2 i64.const 4294967295 @@ -26089,7 +25258,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.wrap_i64 - local.tee $6 + local.tee $3 local.tee $0 i32.const 100000 i32.lt_u @@ -26136,9 +25305,9 @@ i32.add end end - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $4 i32.const 1 i32.shl i32.const 1 @@ -26146,8 +25315,8 @@ local.tee $0 i32.store local.get $0 - local.get $6 - local.get $1 + local.get $3 + local.get $4 call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer @@ -26201,9 +25370,9 @@ i32.add end end - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.shl i32.const 1 @@ -26212,10 +25381,10 @@ i32.store local.get $0 local.get $2 - local.get $1 + local.get $3 call $~lib/util/number/utoa64_dec_lut end - local.get $3 + local.get $1 if local.get $0 i32.const 45 @@ -26229,12 +25398,12 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $7 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $7 + local.tee $5 i32.const 21 i32.add i32.mul @@ -26249,7 +25418,7 @@ i32.store loop $for-loop|0 local.get $3 - local.get $4 + local.get $7 i32.lt_s if local.get $0 @@ -26260,14 +25429,14 @@ local.get $3 i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $7 + local.get $5 if local.get $0 i32.const 1 @@ -26275,12 +25444,12 @@ local.get $1 i32.add i32.const 9584 - local.get $7 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $7 + local.get $5 i32.add local.set $0 end @@ -26297,10 +25466,10 @@ i32.shl local.get $1 i32.add - local.get $4 + local.get $7 i32.const 3 i32.shl - local.get $5 + local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered @@ -26410,7 +25579,6 @@ local.get $0 local.get $3 local.get $2 - local.tee $0 call $~lib/util/number/utoa32_dec_lut else local.get $0 @@ -26465,10 +25633,10 @@ i32.add end end - local.tee $0 + local.tee $2 call $~lib/util/number/utoa64_dec_lut end - local.get $0 + local.get $2 ) (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -26478,33 +25646,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $1 + block $__inlined_func$~lib/util/string/joinIntegerArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + 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 16628 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $3 + local.tee $7 i32.const 0 i32.lt_s if @@ -26513,28 +25677,27 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end block $folding-inner0 - local.get $3 + local.get $7 i32.eqz if - local.get $4 - i64.load - local.set $2 - 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 16628 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/utoa64 + block $__inlined_func$~lib/util/number/utoa64 (result i32) + local.get $4 + i64.load + local.set $2 + 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 16628 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 i64.eqz if @@ -26543,7 +25706,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 8000 - local.set $0 br $__inlined_func$~lib/util/number/utoa64 end local.get $2 @@ -26553,48 +25715,48 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.wrap_i64 - local.tee $3 local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add @@ -26605,10 +25767,10 @@ i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 local.get $3 + local.get $0 local.get $1 call $~lib/util/number/utoa32_dec_lut else @@ -26663,107 +25825,109 @@ i32.add end end - local.tee $1 + local.tee $0 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store - local.get $0 + local.get $3 local.get $2 - local.get $1 + local.get $0 call $~lib/util/number/utoa64_dec_lut end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $3 end + local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $7 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $5 + local.tee $0 i32.const 20 i32.add i32.mul i32.const 20 i32.add - local.tee $7 + local.tee $5 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 i32.store loop $for-loop|0 local.get $3 - local.get $6 - i32.gt_s + local.get $7 + i32.lt_s if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 - i32.add local.get $6 + i32.add + local.get $3 i32.const 3 i32.shl local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add - local.set $0 - local.get $5 + local.set $1 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add i32.const 9584 - local.get $5 + local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $1 i32.add - local.set $0 + local.set $1 end - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 + local.set $3 br $for-loop|0 end end - local.get $7 - local.get $0 + local.get $5 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $6 i32.add - local.get $3 + local.get $7 i32.const 3 i32.shl local.get $4 i32.add i64.load call $~lib/util/number/itoa_buffered - local.get $0 + local.get $1 i32.add local.tee $0 i32.gt_s if - local.get $1 + local.get $6 local.get $0 call $~lib/string/String#substring local.set $0 @@ -26773,16 +25937,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $6 br $__inlined_func$~lib/util/string/joinIntegerArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 return end i32.const 33040 @@ -26797,76 +25960,75 @@ (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i64) (local $13 i64) local.get $2 local.get $1 i64.sub - local.set $10 + local.set $12 local.get $2 i64.const 1 i32.const 0 local.get $3 i32.sub - local.tee $11 + local.tee $10 i64.extend_i32_s local.tee $1 i64.shl - local.tee $12 + local.tee $13 i64.const 1 i64.sub - local.tee $13 + local.tee $11 i64.and local.set $7 local.get $2 local.get $1 i64.shr_u i32.wrap_i64 + local.tee $3 local.tee $6 - local.set $3 - local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $6 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $6 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $6 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $6 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $6 i32.const 100000000 i32.ge_u i32.add @@ -26895,107 +26057,107 @@ i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $6 + local.get $3 i32.const 1000000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 - local.set $3 - i32.const 0 + local.get $3 local.set $6 + i32.const 0 + local.set $3 br $break|1 end i32.const 0 - local.set $3 + local.set $6 end - local.get $3 local.get $5 + local.get $6 i32.or if local.get $5 @@ -27008,7 +26170,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -27019,16 +26181,16 @@ i32.const 1 i32.sub local.set $9 + local.get $4 local.get $7 - local.get $6 + local.get $3 i64.extend_i32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $4 - i64.le_u + i64.ge_u if local.get $9 global.get $~lib/util/number/_K @@ -27040,7 +26202,7 @@ i32.const 10736 i32.add i64.load32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl local.set $2 @@ -27051,44 +26213,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $6 loop $while-continue|3 + local.get $1 + local.get $12 + i64.lt_u local.get $2 local.get $4 local.get $1 i64.sub i64.le_u - i32.const 0 - local.get $1 - local.get $10 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 - local.get $10 + local.get $12 local.get $1 i64.sub local.get $1 local.get $2 i64.add local.tee $7 - local.get $10 + local.get $12 i64.sub i64.gt_u local.get $7 - local.get $10 + local.get $12 i64.lt_u - select + i32.or else i32.const 0 end if - local.get $3 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 local.get $1 local.get $2 i64.add @@ -27096,8 +26256,8 @@ br $while-continue|3 end end + local.get $0 local.get $6 - local.get $3 i32.store16 local.get $5 return @@ -27105,7 +26265,7 @@ br $while-continue|0 end end - loop $while-continue|4 + loop $while-continue|4 (result i32) local.get $4 i64.const 10 i64.mul @@ -27114,7 +26274,7 @@ i64.const 10 i64.mul local.tee $1 - local.get $11 + local.get $10 i64.extend_i32_s i64.shr_u local.tee $2 @@ -27146,93 +26306,88 @@ i32.const 1 i32.sub local.set $9 - local.get $4 local.get $1 - local.get $13 + local.get $11 i64.and local.tee $7 - i64.le_u - br_if $while-continue|4 - end - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 10736 - i32.add - i64.load32_u - local.get $10 - i64.mul - local.set $2 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $6 - i32.load16_u - local.set $3 - loop $while-continue|6 - local.get $12 local.get $4 - local.get $1 - i64.sub - i64.le_u + i64.ge_u + br_if $while-continue|4 + local.get $9 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + local.set $1 i32.const 0 - local.get $1 - local.get $2 - i64.lt_u - select - if (result i32) - i32.const 1 - local.get $2 - local.get $1 - i64.sub + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 10736 + i32.add + i64.load32_u + local.get $12 + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $6 + loop $while-continue|6 local.get $1 - local.get $12 - i64.add - local.tee $7 - local.get $2 - i64.sub - i64.gt_u local.get $2 - local.get $7 - i64.gt_u - select - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.sub - local.set $3 + i64.lt_u + local.get $13 + local.get $4 local.get $1 - local.get $12 - i64.add - local.set $1 - br $while-continue|6 + i64.sub + i64.le_u + i32.and + if (result i32) + local.get $2 + local.get $1 + i64.sub + local.get $1 + local.get $13 + i64.add + local.tee $7 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $7 + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $6 + i32.store16 + local.get $5 end - local.get $6 - local.get $3 - i32.store16 - local.get $5 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -27251,18 +26406,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -27279,27 +26433,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -27321,19 +26474,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -27350,7 +26502,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -27368,7 +26520,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -27379,24 +26531,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -27442,20 +26593,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -27478,20 +26626,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -27499,63 +26646,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -27574,18 +26718,20 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) + (local $15 i64) + (local $16 i64) local.get $1 f64.const 0 f64.lt - local.tee $8 + local.tee $3 if (result f64) local.get $0 i32.const 45 @@ -27602,40 +26748,38 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.set $3 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub local.get $2 i64.const 4503599627370495 i64.and - local.get $3 + local.get $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl i64.add - local.set $2 - local.get $3 - i32.const 1 - local.get $3 - select - i32.const 1075 - i32.sub - local.tee $3 - i32.const 1 - i32.sub - local.get $2 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $5 + local.tee $4 i64.clz i32.wrap_i64 - local.tee $7 + local.tee $8 i32.sub - local.set $9 - local.get $5 - local.get $7 + local.set $10 + local.get $4 + local.get $8 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -27645,25 +26789,25 @@ i64.eq i32.const 1 i32.add - local.tee $7 + local.tee $8 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $3 - local.get $7 - i32.sub local.get $9 + local.get $8 + i32.sub + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $9 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $8 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -27672,9 +26816,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $3 + local.tee $9 local.get $1 - local.get $3 + local.get $9 f64.convert_i32_s f64.ne i32.add @@ -27682,18 +26826,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $3 + local.tee $9 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $7 + local.get $10 i32.const 9864 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $3 + local.get $9 i32.const 1 i32.shl i32.const 10560 @@ -27711,55 +26855,78 @@ local.get $2 i64.const 32 i64.shr_u - local.tee $14 - global.get $~lib/util/number/_frc_pow local.tee $5 + global.get $~lib/util/number/_frc_pow + local.tee $7 i64.const 4294967295 i64.and + local.tee $12 local.tee $2 - local.tee $4 i64.mul - local.get $4 + local.get $2 local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u - local.tee $5 local.set $13 global.get $~lib/util/number/_frc_plus local.tee $4 i64.const 4294967295 i64.and - local.set $6 + local.set $2 local.get $4 i64.const 32 i64.shr_u - local.tee $10 - local.get $2 + local.tee $6 + local.get $12 i64.mul local.get $2 - local.get $6 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add + local.set $14 + global.get $~lib/util/number/_frc_minus + local.tee $15 + i64.const 4294967295 + i64.and local.set $4 - local.get $5 - local.get $10 + local.get $15 + i64.const 32 + i64.shr_u + local.tee $15 + local.get $12 i64.mul local.get $4 + local.get $12 + i64.mul i64.const 32 i64.shr_u i64.add + local.set $12 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 local.get $5 - local.get $6 + local.get $7 + i64.const 32 + i64.shr_u + local.tee $16 + local.tee $7 i64.mul - local.get $4 + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $11 + i64.mul + local.get $13 i64.const 4294967295 i64.and i64.add @@ -27768,44 +26935,17 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.set $4 - global.get $~lib/util/number/_frc_minus - local.tee $6 - i64.const 4294967295 - i64.and - local.set $10 local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $2 + local.get $16 i64.mul - local.get $2 - local.get $10 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $2 - local.get $8 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $13 local.get $14 - i64.mul - local.get $12 i64.const 32 i64.shr_u i64.add - local.get $11 - local.get $13 + local.get $2 + local.get $16 i64.mul - local.get $12 + local.get $14 i64.const 4294967295 i64.and i64.add @@ -27814,24 +26954,26 @@ i64.const 32 i64.shr_u i64.add - local.get $4 + i64.const 1 + i64.sub + local.tee $2 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $8 i32.add i32.const -64 i32.sub - local.get $4 - local.get $5 - local.get $6 - i64.mul local.get $2 + local.get $15 + local.get $16 + i64.mul + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $5 - local.get $10 + local.get $4 + local.get $16 i64.mul - local.get $2 + local.get $12 i64.const 4294967295 i64.and i64.add @@ -27843,13 +26985,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $3 call $~lib/util/number/genDigits - local.get $8 + local.get $3 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $3 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -27929,39 +27071,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + block $__inlined_func$~lib/util/string/joinFloatArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 0 + local.set $0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -27970,14 +27110,13 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 f32.load f64.promote_f32 call $~lib/util/number/dtoa @@ -27985,38 +27124,38 @@ br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 28 i32.add i32.mul i32.const 28 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add f32.load f64.promote_f32 @@ -28024,40 +27163,40 @@ local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 2 i32.shl - local.get $3 + local.get $4 i32.add f32.load f64.promote_f32 @@ -28067,7 +27206,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -28077,16 +27216,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) (local $1 i32) @@ -28095,39 +27233,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - i32.const 0 - local.set $0 - 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 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinFloatArray - local.get $1 + block $__inlined_func$~lib/util/string/joinFloatArray (result i32) + local.get $0 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 0 + local.set $0 + 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 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 0 i32.lt_s if @@ -28136,92 +27272,91 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 7776 - local.set $0 br $__inlined_func$~lib/util/string/joinFloatArray end block $folding-inner0 - local.get $2 + local.get $6 i32.eqz if - local.get $3 + local.get $4 f64.load call $~lib/util/number/dtoa local.set $0 br $folding-inner0 end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $6 i32.const 9580 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 i32.const 28 i32.add i32.mul i32.const 28 i32.add - local.tee $6 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store loop $for-loop|0 - local.get $2 - local.get $5 - i32.gt_s + local.get $1 + local.get $6 + i32.lt_s if local.get $0 i32.const 1 i32.shl - local.get $1 - i32.add local.get $5 + i32.add + local.get $1 i32.const 3 i32.shl - local.get $3 + local.get $4 i32.add f64.load call $~lib/util/number/dtoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $2 if local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add i32.const 9584 - local.get $4 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $2 i32.add local.set $0 end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $6 + local.get $3 local.get $0 i32.const 1 i32.shl - local.get $1 + local.get $5 i32.add - local.get $2 + local.get $6 i32.const 3 i32.shl - local.get $3 + local.get $4 i32.add f64.load call $~lib/util/number/dtoa_buffered @@ -28230,7 +27365,7 @@ local.tee $0 i32.gt_s if - local.get $1 + local.get $5 local.get $0 call $~lib/string/String#substring local.set $0 @@ -28240,16 +27375,15 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.set $0 + local.get $5 br $__inlined_func$~lib/util/string/joinFloatArray end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 end - local.get $0 ) (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -28269,7 +27403,7 @@ local.set $1 end i32.const -1 - local.set $3 + local.set $2 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -28294,7 +27428,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $2 + local.tee $3 i32.gt_u if i32.const 1360 @@ -28304,15 +27438,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 0 i32.lt_s if - local.get $3 + local.get $2 i32.const -1 i32.eq if (result i32) - local.get $2 + local.get $3 local.get $1 i32.sub else @@ -28323,11 +27457,11 @@ call $~lib/builtins/abort unreachable end - local.set $3 + local.set $2 else - local.get $2 - local.get $1 local.get $3 + local.get $1 + local.get $2 i32.add i32.lt_s if @@ -28343,18 +27477,21 @@ i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $0 i32.store - local.get $2 local.get $0 - call $~lib/rt/itcms/__link - local.get $2 + if + local.get $3 + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - i32.store offset=8 local.get $2 + i32.store offset=8 + local.get $3 local.get $0 local.get $1 i32.add @@ -28363,7 +27500,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (local $1 i32) @@ -28384,25 +27521,25 @@ end local.get $0 i32.load offset=4 - local.set $0 + local.set $2 i32.const 11012 i32.load - local.set $2 + local.set $3 i32.const 11020 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if - local.get $0 local.get $1 + local.get $2 i32.add local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.store8 @@ -28576,8 +27713,8 @@ ) (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $4 i64) + (local $5 i32) local.get $2 i32.const 0 i32.lt_s @@ -28613,7 +27750,7 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $5 local.get $1 i32.load offset=8 i32.const 3 @@ -28630,10 +27767,10 @@ local.get $3 i32.const 3 i32.shl - local.get $4 + local.get $5 i32.add i64.load - local.tee $5 + local.tee $4 i32.wrap_i64 local.tee $0 i32.const 31 @@ -28641,7 +27778,7 @@ i32.const -1 i32.xor i64.extend_i32_s - local.get $5 + local.get $4 i32.const 255 local.get $0 i32.sub @@ -28760,27 +27897,27 @@ end local.get $0 i32.load offset=4 - local.set $0 + local.set $2 i32.const 11012 i32.load - local.set $2 + local.set $3 i32.const 11020 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load i32.store16 @@ -28957,25 +28094,25 @@ i32.load offset=4 i32.const 14 i32.add - local.set $0 + local.set $2 i32.const 11268 i32.load - local.set $2 + local.set $3 i32.const 11276 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 1 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_s i32.store16 @@ -29223,25 +28360,25 @@ i32.load offset=4 i32.const 28 i32.add - local.set $0 + local.set $2 i32.const 11268 i32.load - local.set $2 + local.set $3 i32.const 11276 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 2 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i32.load8_s i32.store @@ -29274,27 +28411,27 @@ end local.get $0 i32.load offset=4 - local.set $0 + local.set $2 i32.const 11012 i32.load - local.set $2 + local.set $3 i32.const 11020 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i64.load32_s i64.store @@ -29471,25 +28608,25 @@ i32.load offset=4 i32.const 56 i32.add - local.set $0 + local.set $2 i32.const 11268 i32.load - local.set $2 + local.set $3 i32.const 11276 i32.load - local.set $3 + local.set $0 loop $for-loop|0 + local.get $0 local.get $1 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 i32.const 3 i32.shl - local.get $0 + local.get $2 i32.add local.get $1 - local.get $2 + local.get $3 i32.add i64.load8_s i64.store @@ -29512,13 +28649,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -29718,20 +28855,20 @@ i32.add local.tee $3 i32.load8_s - local.set $6 + local.set $5 local.get $3 local.get $0 local.get $2 i32.add - local.tee $5 + local.tee $3 i32.load8_s i32.store8 local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store8 local.get $2 i32.const 1 @@ -29893,8 +29030,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -29908,11 +29045,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -29920,87 +29056,86 @@ end local.get $0 i32.load8_s - local.set $3 + local.set $1 local.get $0 i32.load8_s offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store8 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load8_s offset=2 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store8 offset=1 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store8 offset=2 end local.get $0 i32.load8_s - local.set $3 + local.set $1 local.get $0 i32.load8_s offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -30015,16 +29150,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -30033,7 +29176,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -30044,48 +29187,56 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -30093,23 +29244,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -30119,11 +29270,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -30133,33 +29284,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -30167,27 +29316,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -30195,15 +29344,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -30214,7 +29363,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -30226,13 +29375,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -30243,9 +29392,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -30279,13 +29428,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -30485,20 +29634,20 @@ i32.add local.tee $3 i32.load8_u - local.set $6 + local.set $5 local.get $3 local.get $0 local.get $2 i32.add - local.tee $5 + local.tee $3 i32.load8_u i32.store8 local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store8 local.get $2 i32.const 1 @@ -30660,8 +29809,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -30675,11 +29824,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -30687,87 +29835,86 @@ end local.get $0 i32.load8_u - local.set $3 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store8 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load8_u offset=2 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store8 offset=1 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $3 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store8 offset=1 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -30782,16 +29929,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -30800,7 +29955,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -30811,48 +29966,56 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -30860,23 +30023,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -30886,11 +30049,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -30900,33 +30063,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -30934,27 +30095,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -30962,15 +30123,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -30981,7 +30142,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -30993,13 +30154,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -31010,9 +30171,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -31056,13 +30217,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -31284,22 +30445,22 @@ i32.add local.tee $3 i32.load16_s - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load16_s i32.store16 local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store16 local.get $2 i32.const 1 @@ -31418,18 +30579,18 @@ local.get $4 i32.add i32.load16_s - local.set $8 + local.set $7 local.get $2 i32.const 1 i32.shl local.get $4 i32.add i32.load16_s - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -31441,7 +30602,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store16 local.get $6 i32.const 1 @@ -31453,7 +30614,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store16 local.get $2 i32.const 1 @@ -31478,8 +30639,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -31493,11 +30654,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -31505,87 +30665,86 @@ end local.get $0 i32.load16_s - local.set $3 + local.set $1 local.get $0 i32.load16_s offset=2 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store16 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load16_s offset=4 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store16 offset=2 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store16 offset=4 end local.get $0 i32.load16_s - local.set $3 + local.set $1 local.get $0 i32.load16_s offset=2 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store16 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store16 offset=2 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -31600,16 +30759,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -31618,7 +30785,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -31629,50 +30796,58 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -31680,23 +30855,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -31706,11 +30881,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -31720,33 +30895,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -31754,27 +30927,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -31782,15 +30955,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -31801,7 +30974,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -31813,13 +30986,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -31830,9 +31003,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -31866,13 +31039,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -32094,22 +31267,22 @@ i32.add local.tee $3 i32.load16_u - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 1 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load16_u i32.store16 local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store16 local.get $2 i32.const 1 @@ -32228,18 +31401,18 @@ local.get $4 i32.add i32.load16_u - local.set $8 + local.set $7 local.get $2 i32.const 1 i32.shl local.get $4 i32.add i32.load16_u - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -32251,7 +31424,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store16 local.get $6 i32.const 1 @@ -32263,7 +31436,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store16 local.get $2 i32.const 1 @@ -32288,8 +31461,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -32303,11 +31476,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -32315,87 +31487,86 @@ end local.get $0 i32.load16_u - local.set $3 + local.set $1 local.get $0 i32.load16_u offset=2 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store16 - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load16_u offset=4 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store16 offset=2 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store16 offset=4 end local.get $0 i32.load16_u - local.set $3 + local.set $1 local.get $0 i32.load16_u offset=2 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store16 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store16 offset=2 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -32410,16 +31581,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -32428,7 +31607,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -32439,50 +31618,58 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -32490,23 +31677,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -32516,11 +31703,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -32530,33 +31717,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -32564,27 +31749,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -32592,15 +31777,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -32611,7 +31796,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -32623,13 +31808,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -32640,9 +31825,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -32686,13 +31871,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -32914,22 +32099,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -33048,18 +32233,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -33071,7 +32256,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -33083,7 +32268,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -33108,8 +32293,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -33123,11 +32308,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -33135,87 +32319,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -33230,16 +32413,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -33248,7 +32439,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -33259,50 +32450,58 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -33310,23 +32509,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -33336,11 +32535,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -33350,33 +32549,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -33384,27 +32581,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -33412,15 +32609,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -33431,7 +32628,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -33443,13 +32640,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -33460,9 +32657,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -33490,13 +32687,13 @@ i32.sub i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $6 + local.get $5 i32.const 1 i32.and local.get $3 @@ -33718,22 +32915,22 @@ i32.add local.tee $3 i32.load - local.set $6 + local.set $5 local.get $3 local.get $2 i32.const 2 i32.shl local.get $0 i32.add - local.tee $5 + local.tee $3 i32.load i32.store local.get $1 i32.const 1 i32.add local.set $1 + local.get $3 local.get $5 - local.get $6 i32.store local.get $2 i32.const 1 @@ -33852,18 +33049,18 @@ local.get $4 i32.add i32.load - local.set $8 + local.set $7 local.get $2 i32.const 2 i32.shl local.get $4 i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -33875,7 +33072,7 @@ i32.shl local.get $0 i32.add - local.get $8 + local.get $7 i32.store local.get $6 i32.const 1 @@ -33887,7 +33084,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i32.store local.get $2 i32.const 1 @@ -33912,8 +33109,8 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i64) + (local $12 i64) + (local $13 i32) local.get $1 i32.const 48 i32.le_s @@ -33927,11 +33124,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -33939,87 +33135,86 @@ end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store - local.get $3 - local.get $4 - local.get $1 - select - local.set $3 local.get $0 i32.load offset=8 - local.set $4 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 - local.get $3 + local.get $5 + local.get $1 local.get $3 local.get $4 + select + local.tee $1 + local.get $1 + local.get $5 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $3 select i32.store offset=4 local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $5 + local.get $3 select i32.store offset=8 end local.get $0 i32.load - local.set $3 + local.set $1 local.get $0 i32.load offset=4 - local.set $4 + local.set $3 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $4 local.get $3 + local.get $1 + local.get $1 local.get $3 - local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 - local.get $4 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 return end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -34034,16 +33229,24 @@ local.tee $6 i32.const 2 i32.shl - local.tee $5 + local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $10 - local.get $5 + local.set $8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add - local.set $11 - i32.const 0 - local.set $5 + local.tee $9 + local.get $7 + i32.add + local.set $10 loop $for-loop|1 local.get $5 local.get $6 @@ -34052,7 +33255,7 @@ local.get $5 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.const -1 i32.store @@ -34063,50 +33266,58 @@ br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $12 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $1 i32.const 1 i32.add - local.tee $1 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $8 i32.const 31 - local.get $9 + local.get $8 i32.const 31 i32.lt_s select - local.tee $7 - local.get $1 + local.tee $1 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $7 - local.get $9 + local.get $1 + local.get $8 i32.lt_s if local.get $0 - local.get $7 + local.get $1 i32.const 1 i32.add local.tee $6 - local.get $9 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $5 @@ -34114,23 +33325,23 @@ i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 local.get $6 - local.get $9 + local.get $8 local.get $6 i32.const 31 i32.add - local.tee $1 - local.get $1 - local.get $9 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select local.tee $5 - local.get $8 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -34140,11 +33351,11 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -34154,33 +33365,31 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $1 - local.get $4 - local.set $8 + local.set $7 loop $for-loop|3 - local.get $1 - local.get $8 - i32.lt_u + local.get $4 + local.get $7 + i32.gt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load - local.tee $4 + local.tee $13 i32.const -1 i32.ne if local.get $0 + local.get $13 + local.get $10 local.get $4 - local.get $11 - local.get $8 i32.const 2 i32.shl local.tee $3 @@ -34188,27 +33397,27 @@ i32.load i32.const 1 i32.add - local.get $7 - local.get $12 + local.get $1 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $10 + local.get $9 i32.add i32.const -1 i32.store - local.get $4 + local.get $13 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $10 - local.get $1 + local.get $9 + local.get $7 i32.const 2 i32.shl local.tee $4 @@ -34216,15 +33425,15 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $10 i32.add - local.get $7 + local.get $1 i32.store local.get $6 local.set $3 local.get $5 - local.set $7 - local.get $1 + local.set $1 + local.get $7 local.set $4 br $while-continue|2 end @@ -34235,7 +33444,7 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $9 i32.add i32.load local.tee $1 @@ -34247,13 +33456,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $10 i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $12 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end @@ -34264,9 +33473,9 @@ br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -34290,41 +33499,41 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i64) (local $6 i64) - (local $7 i64) - (local $8 i32) + (local $7 i32) + (local $8 i64) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 3 i32.shl local.get $0 i32.add local.tee $3 i64.load offset=8 - local.tee $7 + local.tee $8 local.set $6 local.get $3 i64.load @@ -34332,7 +33541,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34341,10 +33550,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -34360,10 +33569,10 @@ local.get $0 i32.add i64.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -34376,7 +33585,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i64.store offset=16 local.get $3 i32.const 1 @@ -34438,10 +33647,10 @@ i32.add local.get $6 i64.store offset=8 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -34449,8 +33658,8 @@ (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i64) - (local $6 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) local.get $1 local.get $2 i32.eq @@ -34491,9 +33700,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 i64.load offset=8 - local.get $7 + local.get $6 i64.load i32.const 2 global.set $~argumentsLength @@ -34534,14 +33743,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 i64.load i64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 i64.store local.get $2 @@ -34720,12 +33929,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) (local $12 i32) - (local $13 i64) - (local $14 i64) + (local $13 i32) + (local $14 i32) + (local $15 i32) local.get $1 i32.const 48 i32.le_s @@ -34739,11 +33949,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -34751,17 +33960,17 @@ end local.get $0 i64.load - local.set $13 + local.set $11 local.get $0 i64.load offset=8 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34770,21 +33979,20 @@ local.tee $1 select i64.store - local.get $13 - local.get $14 - local.get $1 - select - local.set $13 local.get $0 i64.load offset=16 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34794,25 +34002,25 @@ select i64.store offset=8 local.get $0 - local.get $13 - local.get $14 + local.get $10 + local.get $9 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $13 + local.set $10 local.get $0 i64.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34822,8 +34030,8 @@ select i64.store local.get $0 - local.get $13 - local.get $14 + local.get $10 + local.get $9 local.get $1 select i64.store offset=8 @@ -34831,7 +34039,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -34843,43 +34051,59 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $11 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $10 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 3 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $9 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 @@ -34888,7 +34112,7 @@ local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -34903,26 +34127,26 @@ i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 + local.get $7 local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -34931,9 +34155,9 @@ i32.lt_s if local.get $0 - local.get $6 + local.get $5 local.get $12 - local.get $6 + local.get $5 i32.const 31 i32.add local.tee $1 @@ -34941,13 +34165,13 @@ local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 @@ -34956,43 +34180,41 @@ i32.const 1 i32.add i64.extend_i32_u - local.tee $14 + local.tee $9 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $14 + local.get $9 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $10 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -35000,26 +34222,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $9 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $11 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -35028,14 +34250,14 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -35047,7 +34269,7 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load local.tee $1 @@ -35059,13 +34281,13 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $14 i32.add i32.load i32.const 1 i32.add local.get $12 - local.get $9 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -35076,9 +34298,9 @@ br $for-loop|4 end end - local.get $9 + local.get $15 call $~lib/rt/tlsf/__free - local.get $11 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) @@ -35102,41 +34324,41 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i64) (local $6 i64) - (local $7 i64) - (local $8 i32) + (local $7 i32) + (local $8 i64) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 3 i32.shl local.get $0 i32.add local.tee $3 i64.load offset=8 - local.tee $7 + local.tee $8 local.set $6 local.get $3 i64.load @@ -35144,7 +34366,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35153,10 +34375,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -35172,10 +34394,10 @@ local.get $0 i32.add i64.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -35188,7 +34410,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 i64.store offset=16 local.get $3 i32.const 1 @@ -35250,10 +34472,10 @@ i32.add local.get $6 i64.store offset=8 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -35261,8 +34483,8 @@ (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i64) - (local $6 i64) - (local $7 i32) + (local $6 i32) + (local $7 i64) local.get $1 local.get $2 i32.eq @@ -35303,9 +34525,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 i64.load offset=8 - local.get $7 + local.get $6 i64.load i32.const 2 global.set $~argumentsLength @@ -35346,14 +34568,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 i64.load i64.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 i64.store local.get $2 @@ -35532,12 +34754,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) (local $12 i32) - (local $13 i64) - (local $14 i64) + (local $13 i32) + (local $14 i32) + (local $15 i32) local.get $1 i32.const 48 i32.le_s @@ -35551,11 +34774,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -35563,17 +34785,17 @@ end local.get $0 i64.load - local.set $13 + local.set $11 local.get $0 i64.load offset=8 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35582,21 +34804,20 @@ local.tee $1 select i64.store - local.get $13 - local.get $14 - local.get $1 - select - local.set $13 local.get $0 i64.load offset=16 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35606,25 +34827,25 @@ select i64.store offset=8 local.get $0 - local.get $13 - local.get $14 + local.get $10 + local.get $9 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $13 + local.set $10 local.get $0 i64.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $13 - local.get $13 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35634,8 +34855,8 @@ select i64.store local.get $0 - local.get $13 - local.get $14 + local.get $10 + local.get $9 local.get $1 select i64.store offset=8 @@ -35643,7 +34864,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -35655,43 +34876,59 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $11 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $10 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 3 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $9 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 @@ -35700,7 +34937,7 @@ local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -35715,26 +34952,26 @@ i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 + local.get $7 local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 + local.tee $5 local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -35743,9 +34980,9 @@ i32.lt_s if local.get $0 - local.get $6 + local.get $5 local.get $12 - local.get $6 + local.get $5 i32.const 31 i32.add local.tee $1 @@ -35753,13 +34990,13 @@ local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 @@ -35768,43 +35005,41 @@ i32.const 1 i32.add i64.extend_i32_u - local.tee $14 + local.tee $9 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $14 + local.get $9 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $10 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -35812,26 +35047,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $9 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $11 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -35840,14 +35075,14 @@ local.get $3 i32.store local.get $4 - local.get $10 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -35859,7 +35094,7 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $13 i32.add i32.load local.tee $1 @@ -35871,13 +35106,13 @@ local.get $4 i32.const 2 i32.shl - local.get $10 + local.get $14 i32.add i32.load i32.const 1 i32.add local.get $12 - local.get $9 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -35888,9 +35123,9 @@ br $for-loop|4 end end - local.get $9 + local.get $15 call $~lib/rt/tlsf/__free - local.get $11 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) @@ -35914,41 +35149,41 @@ (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 f32) (local $6 f32) - (local $7 f32) - (local $8 i32) + (local $7 i32) + (local $8 f32) local.get $3 local.get $2 local.get $1 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 local.get $3 i32.sub i32.const 1 i32.and i32.sub - local.get $8 + local.get $7 i32.const 1 i32.and local.get $3 select local.get $1 i32.add - local.set $8 + local.set $7 loop $for-loop|0 local.get $2 - local.get $8 + local.get $7 i32.ge_s if - local.get $8 + local.get $7 i32.const 2 i32.shl local.get $0 i32.add local.tee $3 f32.load offset=4 - local.tee $7 + local.tee $8 local.set $6 local.get $3 f32.load @@ -35956,7 +35191,7 @@ i32.const 2 global.set $~argumentsLength local.get $5 - local.get $7 + local.get $8 local.get $4 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -35965,10 +35200,10 @@ if local.get $5 local.set $6 - local.get $7 + local.get $8 local.set $5 end - local.get $8 + local.get $7 i32.const 1 i32.sub local.set $3 @@ -35984,10 +35219,10 @@ local.get $0 i32.add f32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $7 + local.get $8 local.get $5 local.get $4 i32.load @@ -36000,7 +35235,7 @@ i32.shl local.get $0 i32.add - local.get $7 + local.get $8 f32.store offset=8 local.get $3 i32.const 1 @@ -36062,10 +35297,10 @@ i32.add local.get $6 f32.store offset=4 - local.get $8 + local.get $7 i32.const 2 i32.add - local.set $8 + local.set $7 br $for-loop|0 end end @@ -36073,8 +35308,8 @@ (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 f32) - (local $6 f32) - (local $7 i32) + (local $6 i32) + (local $7 f32) local.get $1 local.get $2 i32.eq @@ -36115,9 +35350,9 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $6 f32.load offset=4 - local.get $7 + local.get $6 f32.load i32.const 2 global.set $~argumentsLength @@ -36158,14 +35393,14 @@ i32.shl local.get $0 i32.add - local.tee $7 + local.tee $3 f32.load f32.store local.get $1 i32.const 1 i32.add local.set $1 - local.get $7 + local.get $3 local.get $5 f32.store local.get $2 @@ -36344,13 +35579,14 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $9 f32) + (local $10 f32) + (local $11 f32) (local $12 i32) (local $13 i32) - (local $14 f32) - (local $15 f32) + (local $14 i32) + (local $15 i32) + (local $16 i64) local.get $1 i32.const 48 i32.le_s @@ -36364,11 +35600,10 @@ block $break|0 block $case1|0 local.get $1 - local.tee $4 i32.const 3 i32.ne if - local.get $4 + local.get $1 i32.const 2 i32.eq br_if $case1|0 @@ -36376,17 +35611,17 @@ end local.get $0 f32.load - local.set $15 + local.set $11 local.get $0 f32.load offset=4 - local.set $14 + local.set $10 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $10 + local.get $11 + local.get $11 + local.get $10 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36395,21 +35630,20 @@ local.tee $1 select f32.store - local.get $15 - local.get $14 - local.get $1 - select - local.set $15 local.get $0 f32.load offset=8 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $11 + local.get $10 + local.get $1 + select + local.tee $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36419,25 +35653,25 @@ select f32.store offset=4 local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $15 + local.set $10 local.get $0 f32.load offset=4 - local.set $14 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 - local.get $15 - local.get $15 - local.get $14 + local.get $9 + local.get $10 + local.get $10 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36447,8 +35681,8 @@ select f32.store local.get $0 - local.get $15 - local.get $14 + local.get $10 + local.get $9 local.get $1 select f32.store offset=4 @@ -36456,7 +35690,7 @@ end local.get $0 i32.const 0 - local.get $4 + local.get $1 i32.const 1 i32.sub i32.const 0 @@ -36468,52 +35702,68 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $8 i32.const 2 i32.shl local.tee $7 i32.const 1 i32.shl - call $~lib/rt/tlsf/__alloc - local.tee $12 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $13 local.get $7 i32.add - local.set $11 - i32.const 0 - local.set $7 + local.set $14 loop $for-loop|1 local.get $6 - local.get $7 - i32.gt_u + local.get $8 + i32.lt_u if - local.get $7 + local.get $6 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 i32.const 2 i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 local.get $0 i32.const 0 local.get $1 i32.const 1 i32.sub - local.tee $13 + local.tee $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $7 i32.const 1 i32.add local.tee $1 @@ -36522,32 +35772,32 @@ if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select - local.tee $5 + local.tee $7 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 - local.get $5 - local.get $13 + local.get $7 + local.get $12 i32.lt_s if local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.add - local.tee $6 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 - local.get $6 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add @@ -36556,68 +35806,66 @@ i32.lt_s if local.get $0 - local.get $6 - local.get $13 - local.get $6 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add local.tee $1 local.get $1 - local.get $13 + local.get $12 i32.gt_s select - local.tee $7 + local.tee $6 local.get $8 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $16 i64.div_u + local.get $5 local.get $6 - local.get $7 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i64.div_u i64.xor i32.wrap_i64 i32.clz local.set $1 - local.get $4 - local.set $8 loop $for-loop|3 local.get $1 - local.get $8 + local.get $4 i32.lt_u if - local.get $8 + local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $8 i32.const -1 i32.ne if local.get $0 - local.get $4 - local.get $11 local.get $8 + local.get $14 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -36625,26 +35873,26 @@ i32.load i32.const 1 i32.add - local.get $5 - local.get $10 + local.get $7 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store - local.get $4 + local.get $8 local.set $3 end - local.get $8 + local.get $4 i32.const 1 i32.sub - local.set $8 + local.set $4 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $1 i32.const 2 i32.shl @@ -36653,14 +35901,14 @@ local.get $3 i32.store local.get $4 - local.get $11 + local.get $14 i32.add - local.get $5 + local.get $7 i32.store - local.get $6 + local.get $5 local.set $3 - local.get $7 - local.set $5 + local.get $6 + local.set $7 local.get $1 local.set $4 br $while-continue|2 @@ -36672,7 +35920,7 @@ local.get $4 i32.const 2 i32.shl - local.get $12 + local.get $13 i32.add i32.load local.tee $1 @@ -36684,13 +35932,13 @@ local.get $4 i32.const 2 i32.shl - local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $15 local.get $2 call $~lib/util/sort/mergeRuns end @@ -36701,9 +35949,9 @@ br $for-loop|4 end end - local.get $10 + local.get $15 call $~lib/rt/tlsf/__free - local.get $12 + local.get $13 call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) @@ -36774,12 +36022,20 @@ end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end local.get $0 @@ -36787,7 +36043,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end ) (func $~start @@ -36803,45 +36059,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Int8Array#__set @@ -36858,89 +36113,92 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $0 - i32.load offset=8 - local.set $5 local.get $1 + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $5 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $7 loop $for-loop|0 + local.get $3 local.get $4 - local.get $5 i32.lt_s if - local.get $4 - local.get $9 + local.get $3 + local.get $7 i32.add i32.load8_s - local.set $7 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + local.get $6 + local.get $3 + local.get $2 i32.const 3952 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 - local.get $6 + local.set $0 + local.get $1 + local.get $5 i32.add - local.get $7 + local.get $6 i32.store8 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $1 - local.get $6 - local.get $2 + local.get $8 + local.get $5 + local.get $0 call $~lib/rt/itcms/__renew - local.tee $0 + local.tee $1 i32.store local.get $1 + if + local.get $8 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $8 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $8 i32.store offset=8 - local.get $0 + local.get $8 i32.load offset=4 - local.get $0 + local.get $8 i32.load i32.sub if @@ -36951,7 +36209,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -36963,7 +36221,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 3 @@ -36976,7 +36234,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 @@ -36989,7 +36247,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 5 @@ -37025,45 +36283,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Uint8Array#__set @@ -37080,89 +36337,92 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $0 - i32.load offset=8 - local.set $5 local.get $1 + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $5 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $7 loop $for-loop|0 + local.get $3 local.get $4 - local.get $5 i32.lt_s if - local.get $4 - local.get $9 + local.get $3 + local.get $7 i32.add i32.load8_u - local.set $7 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + local.get $6 + local.get $3 + local.get $2 i32.const 3984 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 - local.get $6 + local.set $0 + local.get $1 + local.get $5 i32.add - local.get $7 + local.get $6 i32.store8 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $1 - local.get $6 - local.get $2 + local.get $8 + local.get $5 + local.get $0 call $~lib/rt/itcms/__renew - local.tee $0 + local.tee $1 i32.store local.get $1 + if + local.get $8 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $8 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $8 i32.store offset=8 - local.get $0 + local.get $8 i32.load offset=4 - local.get $0 + local.get $8 i32.load i32.sub if @@ -37173,7 +36433,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -37185,7 +36445,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 3 @@ -37198,7 +36458,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 @@ -37211,7 +36471,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 5 @@ -37247,45 +36507,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#__set @@ -37302,89 +36561,92 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i64.const 0 i64.store - local.get $0 - i32.load offset=8 - local.set $5 local.get $1 + local.tee $2 + i32.load offset=8 + local.set $4 + local.get $5 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $8 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $7 loop $for-loop|0 + local.get $3 local.get $4 - local.get $5 i32.lt_s if - local.get $4 - local.get $9 + local.get $3 + local.get $7 i32.add i32.load8_u - local.set $7 + local.set $6 i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $4 - local.get $0 + local.get $6 + local.get $3 + local.get $2 i32.const 4016 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 - local.get $6 + local.set $0 + local.get $1 + local.get $5 i32.add - local.get $7 + local.get $6 i32.store8 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $1 - local.get $6 - local.get $2 + local.get $8 + local.get $5 + local.get $0 call $~lib/rt/itcms/__renew - local.tee $0 + local.tee $1 i32.store local.get $1 + if + local.get $8 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $8 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $8 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $8 i32.store offset=8 - local.get $0 + local.get $8 i32.load offset=4 - local.get $0 + local.get $8 i32.load i32.sub if @@ -37395,7 +36657,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.ne @@ -37407,7 +36669,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 @@ -37420,7 +36682,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 @@ -37433,7 +36695,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $8 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 @@ -37469,45 +36731,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Int16Array#__set @@ -37524,19 +36785,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 1 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -37546,9 +36808,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -37557,7 +36819,7 @@ local.get $4 i32.const 1 i32.shl - local.get $9 + local.get $8 i32.add i32.load16_s local.set $7 @@ -37565,17 +36827,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4048 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.shl local.get $6 @@ -37590,34 +36852,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 1 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -37628,7 +36892,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u @@ -37642,7 +36906,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 3 @@ -37655,7 +36919,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 @@ -37668,7 +36932,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 5 @@ -37704,45 +36968,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Uint16Array#__set @@ -37759,19 +37022,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 1 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -37781,9 +37045,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -37792,7 +37056,7 @@ local.get $4 i32.const 1 i32.shl - local.get $9 + local.get $8 i32.add i32.load16_u local.set $7 @@ -37800,17 +37064,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4080 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.shl local.get $6 @@ -37825,34 +37089,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 1 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -37863,7 +37129,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 1 i32.shr_u @@ -37877,7 +37143,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 3 @@ -37890,7 +37156,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 @@ -37903,7 +37169,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 5 @@ -37939,45 +37205,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Int32Array#__set @@ -37994,19 +37259,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38016,9 +37282,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38027,7 +37293,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add i32.load local.set $7 @@ -38035,17 +37301,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4112 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 2 i32.shl local.get $6 @@ -38060,34 +37326,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 2 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -38098,7 +37366,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -38112,7 +37380,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -38125,7 +37393,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 @@ -38138,7 +37406,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 5 @@ -38174,45 +37442,44 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 5 call $~lib/typedarray/Uint32Array#__set @@ -38229,19 +37496,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38251,9 +37519,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38262,7 +37530,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add i32.load local.set $7 @@ -38270,17 +37538,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 2 i32.shl local.get $6 @@ -38295,34 +37563,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 2 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -38333,7 +37603,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -38347,7 +37617,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 3 @@ -38360,7 +37630,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 @@ -38373,7 +37643,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 5 @@ -38409,45 +37679,44 @@ (local $6 i32) (local $7 i64) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 3 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 5 i64.const 5 call $~lib/typedarray/Int64Array#__set @@ -38464,19 +37733,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38486,9 +37756,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38497,7 +37767,7 @@ local.get $4 i32.const 3 i32.shl - local.get $9 + local.get $8 i32.add i64.load local.set $7 @@ -38505,17 +37775,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4176 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 3 i32.shl local.get $6 @@ -38530,34 +37800,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 3 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -38568,7 +37840,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -38582,7 +37854,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 3 @@ -38595,7 +37867,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 @@ -38608,7 +37880,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 5 @@ -38644,45 +37916,44 @@ (local $6 i32) (local $7 i64) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 3 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 5 i64.const 5 call $~lib/typedarray/Uint64Array#__set @@ -38699,19 +37970,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38721,9 +37993,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38732,7 +38004,7 @@ local.get $4 i32.const 3 i32.shl - local.get $9 + local.get $8 i32.add i64.load local.set $7 @@ -38740,17 +38012,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4208 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 3 i32.shl local.get $6 @@ -38765,34 +38037,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 3 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -38803,7 +38077,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -38817,7 +38091,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 3 @@ -38830,7 +38104,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 @@ -38843,7 +38117,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 5 @@ -38879,45 +38153,44 @@ (local $6 i32) (local $7 f32) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Float32Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 3 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 5 f32.const 5 call $~lib/typedarray/Float32Array#__set @@ -38934,19 +38207,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -38956,9 +38230,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -38967,7 +38241,7 @@ local.get $4 i32.const 2 i32.shl - local.get $9 + local.get $8 i32.add f32.load local.set $7 @@ -38975,17 +38249,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4240 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 2 i32.shl local.get $6 @@ -39000,34 +38274,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 2 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -39038,7 +38314,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u @@ -39052,7 +38328,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 3 @@ -39065,7 +38341,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 @@ -39078,7 +38354,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 5 @@ -39114,45 +38390,44 @@ (local $6 i32) (local $7 f64) (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 6 call $~lib/typedarray/Float64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 3 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 5 f64.const 5 call $~lib/typedarray/Float64Array#__set @@ -39169,19 +38444,20 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $1 + local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u local.set $5 - local.get $1 + local.get $3 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $5 @@ -39191,9 +38467,9 @@ call $~lib/rt/itcms/__new local.tee $6 i32.store offset=4 - local.get $0 + local.get $1 i32.load offset=4 - local.set $9 + local.set $8 loop $for-loop|0 local.get $4 local.get $5 @@ -39202,7 +38478,7 @@ local.get $4 i32.const 3 i32.shl - local.get $9 + local.get $8 i32.add f64.load local.set $7 @@ -39210,17 +38486,17 @@ global.set $~argumentsLength local.get $7 local.get $4 - local.get $0 + local.get $2 i32.const 4272 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) if - local.get $2 - local.tee $3 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $2 - local.get $3 + local.set $0 + local.get $1 i32.const 3 i32.shl local.get $6 @@ -39235,34 +38511,36 @@ br $for-loop|0 end end - local.get $1 + local.get $3 local.get $6 - local.get $2 + local.get $0 i32.const 3 i32.shl - local.tee $2 - call $~lib/rt/itcms/__renew local.tee $0 + call $~lib/rt/itcms/__renew + local.tee $1 i32.store local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - call $~lib/rt/itcms/__link - local.get $1 - local.get $2 i32.store offset=8 + local.get $3 local.get $1 - local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.tee $0 + local.get $3 i32.store offset=8 - local.get $0 + local.get $3 i32.load offset=4 - local.get $0 + local.get $3 i32.load i32.sub if @@ -39273,7 +38551,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u @@ -39287,7 +38565,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 3 @@ -39300,7 +38578,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 @@ -39313,7 +38591,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -39758,1736 +39036,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $5 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - i32.load - local.set $7 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - i32.load - i32.store - local.get $6 - local.get $7 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $5 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - i32.load - local.set $7 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - i32.load - i32.store - local.get $6 - local.get $7 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $5 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - i64.store - local.get $7 - local.get $8 - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - i64.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - i64.load - i64.store - local.get $6 - local.get $8 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $5 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - i64.load - i64.store - local.get $7 - local.get $8 - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - i64.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - i64.load - i64.store - local.get $6 - local.get $8 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $5 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - f32.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 2 - i32.shl - local.get $3 - i32.add - local.tee $7 - f32.load - f32.store - local.get $7 - local.get $8 - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Float32Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - f32.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 2 - i32.shl - local.get $5 - i32.add - local.tee $6 - f32.load - f32.store - local.get $6 - local.get $8 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 7616 - i32.store - local.get $1 - i32.const 7628 - i32.load - local.tee $2 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - i32.store offset=8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $5 - local.get $0 - i32.const 7616 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 0 - local.set $0 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $4 - i32.const 1 - i32.gt_u - if - local.get $4 - i32.const 1 - i32.shr_u - local.set $6 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $6 - i32.lt_u - if - local.get $0 - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - f64.load - local.set $8 - local.get $7 - local.get $4 - local.get $0 - i32.sub - i32.const 3 - i32.shl - local.get $3 - i32.add - local.tee $7 - f64.load - f64.store - local.get $7 - local.get $8 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Float64Array#__get - i32.const 7616 - local.get $2 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 570 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - i32.const 0 - local.set $2 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.gt_u - if - local.get $3 - i32.const 1 - i32.shr_u - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - loop $while-continue|01 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $2 - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - f64.load - local.set $8 - local.get $6 - local.get $3 - local.get $2 - i32.sub - i32.const 3 - i32.shl - local.get $5 - i32.add - local.tee $6 - f64.load - f64.store - local.get $6 - local.get $8 - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|01 - end - end - end - local.get $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 577 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 578 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -41613,119 +39161,120 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $8 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 11312 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 - local.get $0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int8Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 11312 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $9 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + local.get $9 i32.load offset=8 i32.const 11100 i32.load @@ -41733,7 +39282,7 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 3 i32.add @@ -41743,37 +39292,37 @@ local.set $7 i32.const 11100 i32.load - local.set $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $10 i32.lt_s if - local.get $3 + local.get $1 local.get $6 i32.add - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_s else i32.const 0 end i32.store8 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -41782,15 +39331,15 @@ i32.const 15 i32.const 11392 call $~lib/rt/__newArray - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $9 + local.get $8 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 0 @@ -41801,15 +39350,13 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 - local.get $0 + local.get $9 i32.load offset=8 i32.const 11196 i32.load @@ -41817,11 +39364,11 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 2 i32.add - local.set $4 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -41829,35 +39376,35 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if + local.get $0 local.get $1 - local.get $4 i32.add - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_s else i32.const 0 end i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -41866,35 +39413,35 @@ i32.const 15 i32.const 11456 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 i32.const 15 i32.const 11488 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -41974,148 +39521,149 @@ f64.convert_i32_s local.get $4 f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set + local.get $5 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 11520 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) block $folding-inner0 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $8 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 11520 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $9 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 + local.get $9 i32.load offset=8 i32.const 11100 i32.load @@ -42123,7 +39671,7 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 3 i32.add @@ -42133,37 +39681,37 @@ local.set $7 i32.const 11100 i32.load - local.set $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $10 i32.lt_s if - local.get $3 + local.get $1 local.get $6 i32.add - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_u else i32.const 0 end i32.store8 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -42172,15 +39720,15 @@ i32.const 63 i32.const 11600 call $~lib/rt/__newArray - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $9 + local.get $8 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 0 @@ -42191,15 +39739,13 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 - local.get $0 + local.get $9 i32.load offset=8 i32.const 11196 i32.load @@ -42207,11 +39753,11 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 2 i32.add - local.set $4 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -42219,35 +39765,35 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if + local.get $0 local.get $1 - local.get $4 i32.add - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_u else i32.const 0 end i32.store8 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -42256,35 +39802,35 @@ i32.const 63 i32.const 11664 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 i32.const 0 i32.const 63 i32.const 11696 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -42391,139 +39937,140 @@ (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + (local $2 f32) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 f32) - (local $10 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $9 i32) + (local $10 i32) + (local $11 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i64.const 0 + i64.store offset=8 + local.get $4 + i32.const 0 + i32.store offset=16 + local.get $4 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $7 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $7 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 i32.const 11020 i32.load - local.get $1 + local.get $8 i32.load offset=8 i32.gt_s br_if $folding-inner0 - local.get $1 + local.get $8 i32.load offset=4 - local.set $6 + local.set $9 i32.const 11012 i32.load - local.set $7 + local.set $10 i32.const 11020 i32.load - local.set $8 + local.set $11 loop $for-loop|0 - local.get $0 - local.get $8 + local.get $1 + local.get $11 i32.lt_s if - local.get $0 - local.get $6 + local.get $1 + local.get $9 i32.add - i32.const 255 - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $10 i32.add i32.load local.tee $5 + i32.const 255 + local.get $5 i32.sub i32.const 31 i32.shr_s - local.get $5 i32.or local.get $5 i32.const 31 @@ -42532,10 +40079,10 @@ i32.xor i32.and i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end @@ -42544,19 +40091,19 @@ i32.const 63 i32.const 11728 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 + local.get $8 local.get $1 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 i32.const 0 - local.set $0 - local.get $1 + local.set $1 + local.get $8 i32.load offset=8 i32.const 11100 i32.load @@ -42564,40 +40111,40 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $8 i32.load offset=4 i32.const 3 i32.add - local.set $6 + local.set $5 i32.const 11092 i32.load - local.set $7 + local.set $9 i32.const 11100 i32.load - local.set $8 + local.set $10 loop $for-loop|04 - local.get $0 - local.get $8 + local.get $1 + local.get $10 i32.lt_s if - local.get $0 - local.get $6 + local.get $1 + local.get $5 i32.add - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $9 i32.add f32.load - local.tee $9 - local.get $9 + local.tee $2 + local.get $2 f32.sub f32.const 0 f32.eq if (result i32) f32.const 0 f32.const 255 - local.get $9 + local.get $2 f32.min f32.max i32.trunc_f32_u @@ -42605,10 +40152,10 @@ i32.const 0 end i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|04 end end @@ -42617,15 +40164,15 @@ i32.const 63 i32.const 11824 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 + local.get $8 local.get $1 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 - local.get $3 + local.get $8 + local.get $6 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> i32.const 10 @@ -42633,19 +40180,17 @@ i32.const 63 i32.const 11856 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 + local.get $8 local.get $1 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $0 - local.get $1 + local.get $8 i32.load offset=8 i32.const 11196 i32.load @@ -42653,40 +40198,40 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $8 i32.load offset=4 i32.const 2 i32.add - local.set $5 + local.set $1 i32.const 11188 i32.load - local.set $6 + local.set $5 i32.const 11196 i32.load - local.set $7 + local.set $6 loop $for-loop|08 local.get $0 - local.get $7 + local.get $6 i32.lt_s if local.get $0 - local.get $5 + local.get $1 i32.add local.get $0 i32.const 3 i32.shl - local.get $6 + local.get $5 i32.add f64.load - local.tee $10 - local.get $10 + local.tee $3 + local.get $3 f64.sub f64.const 0 f64.eq if (result i32) f64.const 0 f64.const 255 - local.get $10 + local.get $3 f64.min f64.max i32.trunc_f64_u @@ -42710,13 +40255,13 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $1 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $1 - local.get $2 + local.get $8 + local.get $7 call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $1 + local.get $8 local.get $4 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> @@ -42725,7 +40270,7 @@ i32.store offset=16 i32.const 0 local.set $0 - local.get $1 + local.get $8 i32.load offset=8 i32.const 11276 i32.load @@ -42733,11 +40278,11 @@ i32.add i32.lt_s br_if $folding-inner0 - local.get $1 + local.get $8 i32.load offset=4 i32.const 7 i32.add - local.set $3 + local.set $1 i32.const 11268 i32.load local.set $4 @@ -42750,20 +40295,20 @@ i32.lt_s if local.get $0 - local.get $3 + local.get $1 i32.add - i32.const 255 local.get $0 local.get $4 i32.add i32.load8_s - local.tee $2 + local.tee $6 + i32.const 255 + local.get $6 i32.sub i32.const 31 i32.shr_s - local.get $2 i32.or - local.get $2 + local.get $6 i32.const 31 i32.shr_s i32.const -1 @@ -42786,7 +40331,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=16 - local.get $1 + local.get $8 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer @@ -42829,7 +40374,7 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -42843,24 +40388,24 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 i32.const 1 i32.shl - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 i32.add i32.load16_s - local.tee $5 + local.tee $4 local.get $1 i32.load offset=4 - local.get $3 + local.get $5 i32.add i32.load16_s - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -42870,9 +40415,9 @@ i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_s - local.get $3 + local.get $5 f64.convert_i32_s f64.const 0 f64.const 0 @@ -42901,129 +40446,130 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $8 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 11952 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int16Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 11952 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $9 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 6 i32.add @@ -43033,39 +40579,39 @@ local.set $7 i32.const 11100 i32.load - local.set $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $10 i32.lt_s if - local.get $3 + local.get $1 i32.const 1 i32.shl local.get $6 i32.add - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_s else i32.const 0 end i32.store16 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -43074,15 +40620,15 @@ i32.const 64 i32.const 12048 call $~lib/rt/__newArray - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $9 + local.get $8 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 1 @@ -43093,29 +40639,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 4 i32.add - local.set $4 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -43123,37 +40667,37 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $4 - i32.add local.get $1 + i32.add + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_s else i32.const 0 end i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -43162,35 +40706,35 @@ i32.const 64 i32.const 12144 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 i32.const 64 i32.const 12192 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -43232,7 +40776,7 @@ i32.load offset=8 i32.const 1 i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -43246,24 +40790,24 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 i32.const 1 i32.shl - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 i32.add i32.load16_u - local.tee $5 + local.tee $4 local.get $1 i32.load offset=4 - local.get $3 + local.get $5 i32.add i32.load16_u - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -43273,9 +40817,9 @@ i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_u - local.get $3 + local.get $5 f64.convert_i32_u f64.const 0 f64.const 0 @@ -43304,129 +40848,130 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store + local.get $8 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $8 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $8 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 12240 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint16Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 12240 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $9 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 6 i32.add @@ -43436,39 +40981,39 @@ local.set $7 i32.const 11100 i32.load - local.set $4 + local.set $10 loop $for-loop|0 - local.get $3 - local.get $4 + local.get $1 + local.get $10 i32.lt_s if - local.get $3 + local.get $1 i32.const 1 i32.shl local.get $6 i32.add - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_u else i32.const 0 end i32.store16 - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -43477,15 +41022,15 @@ i32.const 65 i32.const 12336 call $~lib/rt/__newArray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $9 + local.get $8 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 1 @@ -43496,29 +41041,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 4 i32.add - local.set $4 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -43526,37 +41069,37 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $4 - i32.add local.get $1 + i32.add + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_u else i32.const 0 end i32.store16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -43565,35 +41108,35 @@ i32.const 65 i32.const 12432 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 i32.const 1 i32.const 65 i32.const 12480 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -43635,7 +41178,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -43649,24 +41192,24 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 i32.add i32.load - local.tee $5 + local.tee $4 local.get $1 i32.load offset=4 - local.get $3 + local.get $5 i32.add i32.load - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -43676,9 +41219,9 @@ i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_s - local.get $3 + local.get $5 f64.convert_i32_s f64.const 0 f64.const 0 @@ -43707,174 +41250,175 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) + (local $8 i32) + (local $9 i32) (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $11 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12528 - call $~lib/rt/__newArray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int32Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 12528 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $9 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 12 i32.add - local.set $6 + local.set $7 i32.const 11092 i32.load - local.set $7 + local.set $10 i32.const 11100 i32.load - local.set $10 + local.set $11 loop $for-loop|0 - local.get $4 - local.get $10 + local.get $1 + local.get $11 i32.lt_s if - local.get $7 - local.get $4 + local.get $1 i32.const 2 i32.shl - local.tee $3 + local.tee $8 + local.get $10 i32.add f32.load - local.set $8 - local.get $3 - local.get $6 - i32.add - local.get $8 + local.set $4 + local.get $7 local.get $8 + i32.add + local.get $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_s else i32.const 0 end i32.store - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end @@ -43883,15 +41427,15 @@ i32.const 16 i32.const 12640 call $~lib/rt/__newArray - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $9 + local.get $6 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 2 @@ -43902,29 +41446,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 8 i32.add - local.set $3 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -43932,37 +41474,37 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 - i32.add local.get $1 + i32.add + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_s else i32.const 0 end i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -43971,35 +41513,35 @@ i32.const 16 i32.const 12768 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int32Array#set<~lib/array/Array> i32.const 10 i32.const 2 i32.const 16 i32.const 12832 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44041,7 +41583,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -44055,24 +41597,24 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.tee $3 + local.tee $5 local.get $0 i32.load offset=4 i32.add i32.load - local.tee $5 + local.tee $4 local.get $1 i32.load offset=4 - local.get $3 + local.get $5 i32.add i32.load - local.tee $3 + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer @@ -44082,9 +41624,9 @@ i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_u - local.get $3 + local.get $5 f64.convert_i32_u f64.const 0 f64.const 0 @@ -44113,174 +41655,175 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) + (local $8 i32) + (local $9 i32) (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $11 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $6 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - i32.const 11008 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 12896 - call $~lib/rt/__newArray - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint32Array#constructor + local.tee $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $9 + i32.const 11008 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 12896 + call $~lib/rt/__newArray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $9 + local.get $7 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 12 i32.add - local.set $6 + local.set $7 i32.const 11092 i32.load - local.set $7 + local.set $10 i32.const 11100 i32.load - local.set $10 + local.set $11 loop $for-loop|0 - local.get $4 - local.get $10 + local.get $1 + local.get $11 i32.lt_s if - local.get $7 - local.get $4 + local.get $1 i32.const 2 i32.shl - local.tee $3 + local.tee $8 + local.get $10 i32.add f32.load - local.set $8 - local.get $3 - local.get $6 - i32.add - local.get $8 + local.set $4 + local.get $7 local.get $8 + i32.add + local.get $4 + local.get $4 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + local.get $4 i32.trunc_f32_u else i32.const 0 end i32.store - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $for-loop|0 end end @@ -44289,15 +41832,15 @@ i32.const 66 i32.const 13008 call $~lib/rt/__newArray - local.set $4 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 + local.get $9 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $9 + local.get $6 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 2 @@ -44308,29 +41851,27 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $9 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $9 i32.load offset=4 i32.const 8 i32.add - local.set $3 + local.set $1 i32.const 11188 i32.load local.set $6 @@ -44338,37 +41879,37 @@ i32.load local.set $7 loop $for-loop|04 - local.get $1 + local.get $0 local.get $7 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 - i32.add local.get $1 + i32.add + local.get $0 i32.const 3 i32.shl local.get $6 i32.add f64.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + local.get $5 i32.trunc_f64_u else i32.const 0 end i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -44377,35 +41918,35 @@ i32.const 66 i32.const 13136 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 + local.get $9 local.get $2 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $9 + local.get $3 call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $9 call $~lib/typedarray/Int32Array#set<~lib/array/Array> i32.const 10 i32.const 2 i32.const 66 i32.const 13200 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $9 local.get $0 - local.get $2 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44520,171 +42061,172 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f64) + (local $5 f32) (local $6 i32) (local $7 i32) - (local $8 f64) - (local $9 f32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 13264 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 13264 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $8 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $8 i32.load offset=4 i32.const 24 i32.add - local.set $4 + local.set $9 i32.const 11092 i32.load - local.set $6 + local.set $10 i32.const 11100 i32.load - local.set $7 + local.set $6 loop $for-loop|0 - local.get $2 - local.get $7 + local.get $1 + local.get $6 i32.lt_s if - local.get $2 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $9 i32.add - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $10 i32.add f32.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f32.sub f32.const 0 f32.eq if (result i64) - local.get $9 + local.get $5 i64.trunc_f32_s else i64.const 0 end i64.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -44693,15 +42235,15 @@ i32.const 67 i32.const 13424 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 - local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 + local.get $8 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 3 @@ -44712,67 +42254,65 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $8 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $8 i32.load offset=4 i32.const 16 i32.add - local.set $2 + local.set $1 i32.const 11188 i32.load - local.set $4 + local.set $6 i32.const 11196 i32.load - local.set $6 + local.set $7 loop $for-loop|04 - local.get $1 - local.get $6 + local.get $0 + local.get $7 i32.lt_s if - local.get $4 - local.get $1 + local.get $0 i32.const 3 i32.shl - local.tee $7 + local.tee $9 + local.get $6 i32.add f64.load - local.set $8 - local.get $2 - local.get $7 + local.set $4 + local.get $1 + local.get $9 i32.add - local.get $8 - local.get $8 + local.get $4 + local.get $4 f64.sub f64.const 0 f64.eq if (result i64) - local.get $8 + local.get $4 i64.trunc_f64_s else i64.const 0 end i64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -44781,35 +42321,35 @@ i32.const 67 i32.const 13648 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 + local.get $8 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 - local.get $3 + local.get $8 + local.get $2 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $8 + local.get $3 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $8 call $~lib/typedarray/Int64Array#set<~lib/array/Array> i32.const 10 i32.const 3 i32.const 67 i32.const 13760 call $~lib/rt/__newArray - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=16 + local.get $8 local.get $0 - local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -44898,197 +42438,198 @@ local.get $6 f64.convert_i64_u f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 764 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 f32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13872 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=16 - local.get $0 - local.get $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 764 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer - i32.const 11088 - i32.store offset=16 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + i64.const 0 + i64.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=16 + local.get $2 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=8 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint64Array#constructor + local.tee $8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 + local.get $8 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13872 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $8 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 11088 + i32.store offset=16 i32.const 11100 i32.load i32.const 3 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $8 i32.load offset=4 i32.const 24 i32.add - local.set $4 + local.set $9 i32.const 11092 i32.load - local.set $6 + local.set $10 i32.const 11100 i32.load - local.set $7 + local.set $6 loop $for-loop|0 - local.get $2 - local.get $7 + local.get $1 + local.get $6 i32.lt_s if - local.get $2 + local.get $1 i32.const 3 i32.shl - local.get $4 + local.get $9 i32.add - local.get $2 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $10 i32.add f32.load - local.tee $9 - local.get $9 + local.tee $5 + local.get $5 f32.sub f32.const 0 f32.eq if (result i64) - local.get $9 + local.get $5 i64.trunc_f32_u else i64.const 0 end i64.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end @@ -45097,15 +42638,15 @@ i32.const 68 i32.const 14032 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 - local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 + local.get $8 local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 3 @@ -45116,67 +42657,65 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $0 + local.get $8 local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> global.get $~lib/memory/__stack_pointer i32.const 11184 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11196 i32.load i32.const 2 i32.add - local.get $0 + local.get $8 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $0 + local.get $8 i32.load offset=4 i32.const 16 i32.add - local.set $2 + local.set $1 i32.const 11188 i32.load - local.set $4 + local.set $6 i32.const 11196 i32.load - local.set $6 + local.set $7 loop $for-loop|04 - local.get $1 - local.get $6 + local.get $0 + local.get $7 i32.lt_s if - local.get $4 - local.get $1 + local.get $0 i32.const 3 i32.shl - local.tee $7 + local.tee $9 + local.get $6 i32.add f64.load - local.set $8 - local.get $2 - local.get $7 + local.set $4 + local.get $1 + local.get $9 i32.add - local.get $8 - local.get $8 + local.get $4 + local.get $4 f64.sub f64.const 0 f64.eq if (result i64) - local.get $8 + local.get $4 i64.trunc_f64_u else i64.const 0 end i64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|04 end end @@ -45185,35 +42724,35 @@ i32.const 68 i32.const 14256 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 + local.get $8 local.get $0 - local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 - local.get $3 + local.get $8 + local.get $2 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $0 - local.get $5 + local.get $8 + local.get $3 call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - local.get $0 + local.get $8 call $~lib/typedarray/Int64Array#set<~lib/array/Array> i32.const 10 i32.const 3 i32.const 68 i32.const 14368 call $~lib/rt/__newArray - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=16 + local.get $8 local.get $0 - local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -45333,104 +42872,107 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $9 i32) + (local $10 i32) + (local $11 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i64.const 0 + i64.store offset=8 + local.get $4 + i32.const 0 + i32.store offset=16 + local.get $4 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $7 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $7 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $8 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $8 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $9 + i32.store offset=8 + local.get $9 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $9 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $9 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float32Array#constructor + local.tee $10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 i32.const 11020 i32.load - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 local.set $5 i32.const 11012 @@ -45438,28 +42980,28 @@ local.set $6 i32.const 11020 i32.load - local.set $7 + local.set $11 loop $for-loop|0 - local.get $0 - local.get $7 + local.get $2 + local.get $11 i32.lt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl - local.tee $8 + local.tee $4 local.get $5 i32.add + local.get $4 local.get $6 - local.get $8 i32.add i32.load f32.convert_i32_s f32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -45468,17 +43010,17 @@ i32.const 61 i32.const 14480 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 + local.get $10 local.get $2 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 - local.get $2 + local.get $10 i32.const 11088 i32.const 3 call $~lib/typedarray/Int32Array#set<~lib/array/Array> @@ -45487,62 +43029,60 @@ i32.const 61 i32.const 14592 call $~lib/rt/__newArray - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=16 + local.get $10 local.get $2 - local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $0 - local.get $3 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.const 6 i32.add - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 i32.const 24 i32.add - local.set $5 - local.get $3 + local.set $2 + local.get $7 i32.load offset=4 - local.set $6 - local.get $3 + local.set $4 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 + local.set $5 loop $for-loop|01 - local.get $0 local.get $3 + local.get $5 i32.lt_s if - local.get $0 + local.get $3 i32.const 2 i32.shl - local.get $5 + local.get $2 i32.add - local.get $0 + local.get $3 i32.const 3 i32.shl - local.get $6 + local.get $4 i32.add i64.load f32.convert_i64_s f32.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|01 end end @@ -45551,145 +43091,141 @@ i32.const 61 i32.const 14656 call $~lib/rt/__newArray - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=16 + local.get $10 local.get $2 - local.get $3 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> i32.const 0 - local.set $0 - local.get $1 + local.set $2 + local.get $8 i32.load offset=8 - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 local.set $3 - local.get $1 + local.get $8 i32.load offset=4 - local.set $5 - local.get $1 + local.set $4 + local.get $8 i32.load offset=8 - local.set $1 + local.set $5 loop $for-loop|03 - local.get $0 - local.get $1 + local.get $2 + local.get $5 i32.lt_s if - local.get $0 + local.get $2 i32.const 2 i32.shl local.get $3 i32.add - local.get $0 - local.get $5 + local.get $2 + local.get $4 i32.add i32.load8_u f32.convert_i32_u f32.store - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|03 end end - i32.const 0 - local.set $1 - local.get $4 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u i32.const 4 i32.add - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 i32.const 16 i32.add - local.set $3 - local.get $4 + local.set $2 + local.get $9 i32.load offset=4 - local.set $0 - local.get $4 + local.set $3 + local.get $9 i32.load offset=8 i32.const 1 i32.shr_u local.set $4 loop $for-loop|05 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $3 + local.get $2 i32.add - local.get $1 + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $3 i32.add i32.load16_s f32.convert_i32_s f32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|05 end end global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11276 i32.load i32.const 7 i32.add - local.get $2 + local.get $10 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $10 i32.load offset=4 i32.const 28 i32.add - local.set $3 + local.set $0 i32.const 11268 i32.load - local.set $4 + local.set $2 i32.const 11276 i32.load - local.set $0 + local.set $3 loop $for-loop|09 - local.get $0 local.get $1 - i32.gt_s + local.get $3 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $3 + local.get $0 i32.add local.get $1 - local.get $4 + local.get $2 i32.add i32.load8_s f32.convert_i32_s @@ -45706,12 +43242,12 @@ i32.const 61 i32.const 14720 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 - local.get $2 - local.get $1 + local.get $10 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -45828,134 +43364,137 @@ (local $5 i32) (local $6 i32) (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16628 - i32.lt_s - if - i32.const 33040 - i32.const 33088 + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + if + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i64.const 0 + i64.store offset=8 + local.get $4 + i32.const 0 + i32.store offset=16 + local.get $4 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $4 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $4 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $5 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - i64.const 0 - i64.store offset=8 - local.get $2 - i32.const 0 - i32.store offset=16 - local.get $2 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 11008 - i32.store offset=16 - block $folding-inner0 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $6 + i32.store offset=8 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float64Array#constructor + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 11008 + i32.store offset=16 i32.const 11020 i32.load - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 - local.set $5 + local.set $8 i32.const 11012 i32.load - local.set $6 + local.set $9 i32.const 11020 i32.load - local.set $7 + local.set $10 loop $for-loop|0 - local.get $0 - local.get $7 + local.get $1 + local.get $10 i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl - local.get $5 + local.get $8 i32.add - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $9 i32.add i32.load f64.convert_i32_s f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end @@ -45964,61 +43503,61 @@ i32.const 62 i32.const 14784 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer i32.const 11088 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 i32.const 11100 i32.load i32.const 3 i32.add - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 i32.const 24 i32.add - local.set $5 + local.set $8 i32.const 11092 i32.load - local.set $6 + local.set $9 i32.const 11100 i32.load - local.set $7 + local.set $10 loop $for-loop|04 - local.get $0 - local.get $7 + local.get $1 + local.get $10 i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl - local.get $5 + local.get $8 i32.add - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $9 i32.add f32.load f64.promote_f32 f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|04 end end @@ -46027,61 +43566,59 @@ i32.const 62 i32.const 14944 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=16 - local.get $2 - local.get $0 + local.get $7 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $0 - local.get $3 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u i32.const 6 i32.add - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 i32.const 48 i32.add - local.set $5 - local.get $3 + local.set $1 + local.get $4 i32.load offset=4 - local.set $6 - local.get $3 + local.set $8 + local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 + local.set $4 loop $for-loop|06 - local.get $0 local.get $3 + local.get $4 i32.lt_s if - local.get $5 - local.get $0 + local.get $3 i32.const 3 i32.shl - local.tee $7 + local.tee $9 + local.get $1 i32.add - local.get $6 - local.get $7 + local.get $8 + local.get $9 i32.add i64.load f64.convert_i64_s f64.store - local.get $0 + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|06 end end @@ -46090,153 +43627,149 @@ i32.const 62 i32.const 15056 call $~lib/rt/__newArray - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.store offset=16 - local.get $2 - local.get $3 + local.get $7 + local.get $1 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> i32.const 0 - local.set $0 - local.get $1 + local.set $1 + local.get $5 i32.load offset=8 - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 local.set $3 - local.get $1 + local.get $5 i32.load offset=4 - local.set $5 - local.get $1 + local.set $4 + local.get $5 i32.load offset=8 - local.set $1 + local.set $5 loop $for-loop|08 - local.get $0 local.get $1 + local.get $5 i32.lt_s if - local.get $0 + local.get $1 i32.const 3 i32.shl local.get $3 i32.add - local.get $0 - local.get $5 + local.get $1 + local.get $4 i32.add i32.load8_u f64.convert_i32_u f64.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|08 end end - i32.const 0 - local.set $1 - local.get $4 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u i32.const 4 i32.add - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 i32.const 32 i32.add - local.set $3 - local.get $4 + local.set $1 + local.get $6 i32.load offset=4 - local.set $0 - local.get $4 + local.set $3 + local.get $6 i32.load offset=8 i32.const 1 i32.shr_u local.set $4 loop $for-loop|010 - local.get $1 + local.get $0 local.get $4 i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $3 - i32.add local.get $1 + i32.add + local.get $0 i32.const 1 i32.shl - local.get $0 + local.get $3 i32.add i32.load16_s f64.convert_i32_s f64.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|010 end end global.get $~lib/memory/__stack_pointer i32.const 11264 i32.store offset=16 - i32.const 0 - local.set $1 i32.const 11276 i32.load i32.const 7 i32.add - local.get $2 + local.get $7 i32.load offset=8 i32.const 3 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $2 + local.get $7 i32.load offset=4 i32.const 56 i32.add - local.set $3 + local.set $0 i32.const 11268 i32.load - local.set $4 + local.set $1 i32.const 11276 i32.load - local.set $0 + local.set $3 loop $for-loop|014 - local.get $0 - local.get $1 - i32.gt_s + local.get $2 + local.get $3 + i32.lt_s if - local.get $1 + local.get $2 i32.const 3 i32.shl - local.get $3 + local.get $0 i32.add local.get $1 - local.get $4 + local.get $2 i32.add i32.load8_s f64.convert_i32_s f64.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|014 end end @@ -46245,12 +43778,12 @@ i32.const 62 i32.const 15168 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 - local.get $2 - local.get $1 + local.get $7 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> global.get $~lib/memory/__stack_pointer i32.const 20 @@ -46271,62 +43804,61 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 f32) (local $6 i32) - (local $7 i32) + (local $7 f64) (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 f32) - (local $12 f64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i32) (local $13 i64) (local $14 f32) (local $15 f64) - (local $16 i32) global.get $~lib/memory/__stack_pointer i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner36 - block $folding-inner35 - block $folding-inner34 - block $folding-inner33 - block $folding-inner32 - block $folding-inner31 - block $folding-inner30 - block $folding-inner29 - block $folding-inner28 - block $folding-inner27 - block $folding-inner26 - block $folding-inner25 - block $folding-inner24 - block $folding-inner23 - block $folding-inner22 - block $folding-inner21 - block $folding-inner20 - block $folding-inner19 - block $folding-inner18 - block $folding-inner17 - block $folding-inner16 - block $folding-inner15 - block $folding-inner14 - block $folding-inner13 - block $folding-inner12 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 + block $folding-inner35 + block $folding-inner34 + block $folding-inner33 + block $folding-inner32 + block $folding-inner31 + block $folding-inner30 + block $folding-inner29 + block $folding-inner28 + block $folding-inner27 + block $folding-inner26 + block $folding-inner25 + block $folding-inner24 + block $folding-inner23 + block $folding-inner22 + block $folding-inner21 + block $folding-inner20 + block $folding-inner19 + block $folding-inner18 + block $folding-inner17 + block $folding-inner16 + block $folding-inner15 + block $folding-inner14 + block $folding-inner13 + block $folding-inner12 + block $folding-inner11 + block $folding-inner10 + block $folding-inner9 + block $folding-inner8 + block $folding-inner7 + block $folding-inner6 + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -46574,9 +44106,9 @@ i32.const 2 i32.const 6 call $~lib/typedarray/Float64Array#subarray - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u @@ -46590,9 +44122,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub i32.const 16 @@ -46605,7 +44137,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 32 i32.ne @@ -46619,16 +44151,16 @@ end i32.const 0 global.set $~argumentsLength - local.get $1 + local.get $0 call $~lib/typedarray/Float64Array#sort@varargs drop - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.eq if (result i32) - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -46637,7 +44169,7 @@ i32.const 0 end if (result i32) - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 6 @@ -46646,7 +44178,7 @@ i32.const 0 end if (result i32) - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#__get f64.const 7 @@ -46998,35 +44530,35 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_u select - local.set $1 + local.set $0 i32.const 3 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 3 i32.gt_u select - local.set $0 + local.set $1 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -47054,31 +44586,29 @@ local.get $4 i32.load offset=4 local.set $2 - i32.const 0 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 - select local.set $0 + i32.const 0 + local.set $1 loop $for-loop|01 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|01 end end @@ -47107,40 +44637,36 @@ i32.load offset=4 local.set $2 i32.const 0 + local.set $0 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 - select - local.set $1 - local.get $0 i32.const 3 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|03 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|03 end end @@ -47167,12 +44693,12 @@ end local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const 2 i32.sub local.tee $0 @@ -47181,23 +44707,23 @@ i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|05 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.const 2 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|05 end end @@ -47224,7 +44750,7 @@ end local.get $4 i32.load offset=4 - local.set $2 + local.set $1 i32.const 1 local.get $4 i32.load offset=8 @@ -47235,28 +44761,23 @@ i32.const 1 i32.gt_u select - local.set $1 - i32.const 0 - local.get $0 - local.get $0 - select local.set $0 loop $for-loop|07 local.get $0 - local.get $1 - i32.gt_s + i32.const 0 + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|07 end end @@ -47291,31 +44812,29 @@ local.get $3 i32.load offset=4 local.set $2 - i32.const 0 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 - select local.set $0 + i32.const 0 + local.set $1 loop $for-loop|09 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl local.get $2 i32.add i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|09 end end @@ -48107,9 +45626,9 @@ i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#subarray - local.tee $0 + local.tee $1 i32.store offset=16 - local.get $0 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -48123,9 +45642,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load i32.sub i32.const 4 @@ -48138,7 +45657,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 12 i32.ne @@ -48155,9 +45674,9 @@ i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -48170,7 +45689,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -48183,7 +45702,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -48197,9 +45716,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub if @@ -48210,7 +45729,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 8 i32.ne @@ -48223,7 +45742,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#slice @@ -48355,7 +45874,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48363,57 +45882,59 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 2896 i32.store offset=4 - local.get $3 + i32.const 0 + local.set $0 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|011 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|010 + local.get $0 + local.get $2 + i32.lt_s if - local.get $2 - local.get $5 + local.get $0 + local.get $3 i32.add i32.load8_s - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 2896 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|011 + local.set $0 + br $for-loop|010 end end - local.get $6 + local.get $9 i32.const 255 i32.and i32.const 6 @@ -48430,7 +45951,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48438,17 +45959,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -48456,43 +45977,43 @@ i32.const 2928 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|010 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|04 + local.get $0 + local.get $2 + i32.lt_s if - local.get $2 - local.get $5 + local.get $0 + local.get $3 i32.add i32.load8_u - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 2928 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|010 + local.set $0 + br $for-loop|04 end end - local.get $6 + local.get $9 i32.const 255 i32.and i32.const 6 @@ -48509,7 +46030,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48517,17 +46038,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -48535,43 +46056,43 @@ i32.const 2960 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|013 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|08 + local.get $0 + local.get $2 + i32.lt_s if - local.get $2 - local.get $5 + local.get $0 + local.get $3 i32.add i32.load8_u - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 2960 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|013 + local.set $0 + br $for-loop|08 end end - local.get $6 + local.get $9 i32.const 255 i32.and i32.const 6 @@ -48588,7 +46109,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48596,17 +46117,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -48614,47 +46135,47 @@ i32.const 2992 i32.store offset=4 i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - local.get $3 + local.set $0 + i32.const 0 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|014 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|01011 + local.get $0 + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 2992 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|014 + local.set $0 + br $for-loop|01011 end end - local.get $6 + local.get $9 i32.const 65535 i32.and i32.const 6 @@ -48671,7 +46192,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48679,17 +46200,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -48697,47 +46218,47 @@ i32.const 3024 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|016 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|013 + local.get $0 + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 3024 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|016 + local.set $0 + br $for-loop|013 end end - local.get $6 + local.get $9 i32.const 65535 i32.and i32.const 6 @@ -48754,7 +46275,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48762,17 +46283,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -48780,47 +46301,47 @@ i32.const 3056 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|018 - local.get $1 - local.get $5 - i32.gt_s + local.set $2 + loop $for-loop|016 + local.get $0 + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 3056 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|018 + local.set $0 + br $for-loop|016 end end - local.get $6 + local.get $9 i32.const 6 i32.ne br_if $folding-inner1 @@ -48835,7 +46356,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48843,17 +46364,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + local.tee $4 i32.store - local.get $3 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $3 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -48861,47 +46382,47 @@ i32.const 3088 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i32.const 0 - local.set $6 - local.get $3 + local.set $9 + local.get $4 i32.load offset=4 - local.set $2 - local.get $3 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $2 loop $for-loop|021 - local.get $1 - local.get $5 - i32.gt_s + local.get $0 + local.get $2 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load - local.set $0 + local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $9 + local.get $1 local.get $0 - local.get $5 - local.get $3 + local.get $4 i32.const 3088 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 - local.get $5 + local.set $9 + local.get $0 i32.const 1 i32.add - local.set $5 + local.set $0 br $for-loop|021 end end - local.get $6 + local.get $9 i32.const 6 i32.ne br_if $folding-inner1 @@ -48916,7 +46437,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -48924,17 +46445,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set @@ -48942,42 +46463,42 @@ i32.const 3120 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|023 + local.set $1 + loop $for-loop|024 local.get $0 - local.get $5 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 4 global.set $~argumentsLength local.get $13 - local.get $9 - local.get $5 - local.get $2 + local.get $10 + local.get $0 + local.get $3 i32.const 3120 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|023 + local.set $0 + br $for-loop|024 end end local.get $13 @@ -48995,7 +46516,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49003,17 +46524,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $3 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -49021,44 +46542,44 @@ i32.const 3152 i32.store offset=4 i32.const 0 - local.set $5 + local.set $0 i64.const 0 local.set $13 - local.get $2 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|025 + local.set $1 + loop $for-loop|027 local.get $0 - local.get $5 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 4 global.set $~argumentsLength local.get $13 - local.get $9 - local.get $5 - local.get $2 + local.get $10 + local.get $0 + local.get $3 i32.const 3152 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|025 + local.set $0 + br $for-loop|027 end end local.get $13 @@ -49076,7 +46597,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49084,17 +46605,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $3 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set @@ -49102,42 +46623,42 @@ i32.const 3184 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|027 + local.set $1 + loop $for-loop|030 local.get $0 - local.get $5 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $5 + local.get $0 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 4 global.set $~argumentsLength local.get $14 - local.get $11 local.get $5 - local.get $2 + local.get $0 + local.get $3 i32.const 3184 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $14 - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|027 + local.set $0 + br $for-loop|030 end end local.get $14 @@ -49155,7 +46676,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49163,17 +46684,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $2 + local.get $3 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set @@ -49181,42 +46702,42 @@ i32.const 3216 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $3 i32.load offset=4 - local.set $1 - local.get $2 + local.set $2 + local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - loop $for-loop|029 + local.set $1 + loop $for-loop|033 local.get $0 - local.get $5 - i32.gt_s + local.get $1 + i32.lt_s if - local.get $5 + local.get $0 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $15 - local.get $12 - local.get $5 - local.get $2 + local.get $7 + local.get $0 + local.get $3 i32.const 3216 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $15 - local.get $5 + local.get $0 i32.const 1 i32.add - local.set $5 - br $for-loop|029 + local.set $0 + br $for-loop|033 end end local.get $15 @@ -49234,7 +46755,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49285,7 +46806,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49336,7 +46857,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49387,7 +46908,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49438,7 +46959,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49489,7 +47010,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49540,7 +47061,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49591,7 +47112,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49642,7 +47163,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49693,7 +47214,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49744,7 +47265,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -49795,7 +47316,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49803,17 +47324,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set @@ -49821,17 +47342,17 @@ i32.const 3248 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub - local.set $3 - loop $for-loop|031 - local.get $3 + local.set $1 + loop $for-loop|039 + local.get $1 i32.const 0 i32.ge_s if @@ -49839,25 +47360,25 @@ local.get $3 i32.add i32.load8_s - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|031 + local.set $1 + br $for-loop|039 end end - local.get $5 + local.get $0 i32.const 255 i32.and i32.const 6 @@ -49874,7 +47395,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49882,17 +47403,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -49900,17 +47421,17 @@ i32.const 3280 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub - local.set $3 - loop $for-loop|033 - local.get $3 + local.set $1 + loop $for-loop|042 + local.get $1 i32.const 0 i32.ge_s if @@ -49918,25 +47439,25 @@ local.get $3 i32.add i32.load8_u - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|033 + local.set $1 + br $for-loop|042 end end - local.get $5 + local.get $0 i32.const 255 i32.and i32.const 6 @@ -49953,7 +47474,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -49961,17 +47482,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -49979,17 +47500,17 @@ i32.const 3312 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.sub - local.set $3 - loop $for-loop|036 - local.get $3 + local.set $1 + loop $for-loop|046 + local.get $1 i32.const 0 i32.ge_s if @@ -49997,25 +47518,25 @@ local.get $3 i32.add i32.load8_u - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|036 + local.set $1 + br $for-loop|046 end end - local.get $5 + local.get $0 i32.const 255 i32.and i32.const 6 @@ -50032,7 +47553,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50040,17 +47561,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -50058,47 +47579,47 @@ i32.const 3344 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|038 - local.get $3 + local.set $1 + loop $for-loop|049 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $3 i32.add i32.load16_s - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|038 + local.set $1 + br $for-loop|049 end end - local.get $5 + local.get $0 i32.const 65535 i32.and i32.const 6 @@ -50115,7 +47636,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50123,17 +47644,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -50141,47 +47662,47 @@ i32.const 3376 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 1 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|040 - local.get $3 + local.set $1 + loop $for-loop|052 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 1 i32.shl - local.get $1 + local.get $3 i32.add i32.load16_u - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|040 + local.set $1 + br $for-loop|052 end end - local.get $5 + local.get $0 i32.const 65535 i32.and i32.const 6 @@ -50198,7 +47719,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50206,17 +47727,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -50224,47 +47745,47 @@ i32.const 3408 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|042 - local.get $3 + local.set $1 + loop $for-loop|055 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $3 i32.add i32.load - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|042 + local.set $1 + br $for-loop|055 end end - local.get $5 + local.get $0 i32.const 6 i32.ne br_if $folding-inner5 @@ -50279,7 +47800,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50287,17 +47808,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $4 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $4 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -50305,47 +47826,47 @@ i32.const 3440 i32.store offset=4 i32.const 0 - local.set $5 - local.get $2 + local.set $0 + local.get $4 i32.load offset=4 - local.set $1 - local.get $2 + local.set $3 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|044 - local.get $3 + local.set $1 + loop $for-loop|058 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $3 i32.add i32.load - local.set $0 + local.set $2 i32.const 4 global.set $~argumentsLength - local.get $5 local.get $0 - local.get $3 local.get $2 + local.get $1 + local.get $4 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $3 + local.set $0 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|044 + local.set $1 + br $for-loop|058 end end - local.get $5 + local.get $0 i32.const 6 i32.ne br_if $folding-inner5 @@ -50360,7 +47881,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50368,17 +47889,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $2 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $2 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set @@ -50387,43 +47908,43 @@ i32.store offset=4 i64.const 0 local.set $13 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|046 - local.get $3 + local.set $1 + loop $for-loop|061 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add i64.load - local.set $9 + local.set $10 i32.const 4 global.set $~argumentsLength local.get $13 - local.get $9 - local.get $3 + local.get $10 local.get $1 + local.get $2 i32.const 3472 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $3 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|046 + local.set $1 + br $for-loop|061 end end local.get $13 @@ -50441,7 +47962,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50449,17 +47970,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $2 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $2 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -50468,43 +47989,43 @@ i32.store offset=4 i64.const 0 local.set $13 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|048 - local.get $3 + local.set $1 + loop $for-loop|064 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add i64.load - local.set $9 + local.set $10 i32.const 4 global.set $~argumentsLength local.get $13 - local.get $9 - local.get $3 + local.get $10 local.get $1 + local.get $2 i32.const 3504 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $3 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|048 + local.set $1 + br $for-loop|064 end end local.get $13 @@ -50522,7 +48043,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50530,17 +48051,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $2 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $2 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set @@ -50549,43 +48070,43 @@ i32.store offset=4 f32.const 0 local.set $14 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|050 - local.get $3 + local.set $1 + loop $for-loop|067 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 2 i32.shl local.get $0 i32.add f32.load - local.set $11 + local.set $5 i32.const 4 global.set $~argumentsLength local.get $14 - local.get $11 - local.get $3 + local.get $5 local.get $1 + local.get $2 i32.const 3536 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $14 - local.get $3 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|050 + local.set $1 + br $for-loop|067 end end local.get $14 @@ -50603,7 +48124,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50611,17 +48132,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $2 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $2 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set @@ -50630,43 +48151,43 @@ i32.store offset=4 f64.const 0 local.set $15 - local.get $1 + local.get $2 i32.load offset=4 local.set $0 - local.get $1 + local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $3 - loop $for-loop|052 - local.get $3 + local.set $1 + loop $for-loop|070 + local.get $1 i32.const 0 i32.ge_s if - local.get $3 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add f64.load - local.set $12 + local.set $7 i32.const 4 global.set $~argumentsLength local.get $15 - local.get $12 - local.get $3 + local.get $7 local.get $1 + local.get $2 i32.const 3568 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $15 - local.get $3 + local.get $1 i32.const 1 i32.sub - local.set $3 - br $for-loop|052 + local.set $1 + br $for-loop|070 end end local.get $15 @@ -50677,8 +48198,6 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $5 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50686,7 +48205,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50697,17 +48216,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $8 i32.store - local.get $0 + local.get $8 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $8 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $8 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set @@ -50722,100 +48241,103 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $8 i32.load offset=8 local.set $4 - local.get $0 + local.get $8 i32.load offset=4 - local.set $2 - local.get $1 + local.set $3 + local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store offset=4 - loop $for-loop|02 + loop $for-loop|012 local.get $4 - local.get $5 + local.get $12 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $12 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 - i32.add local.get $1 - local.get $5 + local.get $12 + i32.add local.get $0 + local.get $12 + local.get $8 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 - br $for-loop|02 + local.set $12 + br $for-loop|012 end end - local.get $7 - local.get $6 + local.get $2 + local.get $1 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $1 + if + local.get $2 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $1 i32.store offset=4 - local.get $7 + local.get $2 local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.store offset=8 - local.get $7 + local.get $2 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner6 + local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner7 + local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $5 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50823,7 +48345,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50834,17 +48356,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $8 i32.store - local.get $0 + local.get $8 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $8 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $8 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set @@ -50859,100 +48381,103 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $8 i32.load offset=8 local.set $4 - local.get $0 + local.get $8 i32.load offset=4 - local.set $2 - local.get $1 + local.set $3 + local.get $0 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store offset=4 - loop $for-loop|04 + loop $for-loop|014 local.get $4 - local.get $5 + local.get $12 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $12 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 - i32.add local.get $1 - local.get $5 + local.get $12 + i32.add local.get $0 + local.get $12 + local.get $8 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 - br $for-loop|04 + local.set $12 + br $for-loop|014 end end - local.get $7 - local.get $6 + local.get $2 + local.get $1 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $1 + if + local.get $2 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $1 i32.store offset=4 - local.get $7 + local.get $2 local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.store offset=8 - local.get $7 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner6 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner7 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $5 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -50960,7 +48485,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -50971,17 +48496,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $8 i32.store - local.get $0 + local.get $8 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $8 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $8 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set @@ -50996,98 +48521,103 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $8 i32.load offset=8 local.set $4 - local.get $0 + local.get $8 i32.load offset=4 - local.set $2 - local.get $1 + local.set $3 + local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store offset=4 - loop $for-loop|06 + loop $for-loop|015 local.get $4 - local.get $5 + local.get $12 i32.gt_s if - local.get $2 - local.get $5 + local.get $3 + local.get $12 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $6 - i32.add local.get $1 - local.get $5 + local.get $12 + i32.add local.get $0 + local.get $12 + local.get $8 i32.const 3664 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store8 - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 - br $for-loop|06 + local.set $12 + br $for-loop|015 end end - local.get $7 - local.get $6 + local.get $2 + local.get $1 i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 + local.get $1 + if + local.get $2 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $2 + local.get $1 i32.store offset=4 - local.get $7 + local.get $2 local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $2 i32.store offset=8 - local.get $7 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $7 + br_if $folding-inner6 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $7 + br_if $folding-inner7 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51095,7 +48625,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51106,17 +48636,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $11 i32.store - local.get $0 + local.get $11 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $11 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $11 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set @@ -51131,108 +48661,111 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $11 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 - local.get $0 + local.set $8 + local.get $11 i32.load offset=4 - local.set $4 - local.get $1 + local.set $6 + local.get $0 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.const 1 i32.shl local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store offset=4 - loop $for-loop|08 - local.get $5 + loop $for-loop|017 local.get $8 + local.get $12 i32.gt_s if - local.get $4 - local.get $8 + local.get $6 + local.get $12 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $7 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $12 + local.get $11 i32.const 3696 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $8 + local.get $12 i32.const 1 i32.add - local.set $8 - br $for-loop|08 + local.set $12 + br $for-loop|017 end end - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $2 i32.store offset=4 - local.get $10 + local.get $4 local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $4 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner6 + local.get $4 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner7 + local.get $4 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $8 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51240,7 +48773,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51251,17 +48784,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $11 i32.store - local.get $0 + local.get $11 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $11 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $11 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set @@ -51276,108 +48809,111 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $11 i32.load offset=8 i32.const 1 i32.shr_u - local.set $5 - local.get $0 + local.set $8 + local.get $11 i32.load offset=4 - local.set $4 - local.get $1 + local.set $6 + local.get $0 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.const 1 i32.shl local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store offset=4 - loop $for-loop|012 - local.get $5 + loop $for-loop|018 local.get $8 + local.get $12 i32.gt_s if - local.get $4 - local.get $8 + local.get $6 + local.get $12 i32.const 1 i32.shl - local.tee $2 + local.tee $1 i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $7 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $12 + local.get $11 i32.const 3728 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store16 - local.get $8 + local.get $12 i32.const 1 i32.add - local.set $8 - br $for-loop|012 + local.set $12 + br $for-loop|018 end end - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $2 i32.store offset=4 - local.get $10 + local.get $4 local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $4 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner6 + local.get $4 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner7 + local.get $4 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $8 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51385,7 +48921,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51396,17 +48932,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $11 i32.store - local.get $0 + local.get $11 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $11 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $11 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set @@ -51421,108 +48957,111 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $11 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $0 + local.set $8 + local.get $11 i32.load offset=4 - local.set $4 - local.get $1 + local.set $6 + local.get $0 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.const 2 i32.shl local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store offset=4 - loop $for-loop|015 - local.get $5 + loop $for-loop|019 local.get $8 + local.get $12 i32.gt_s if - local.get $4 - local.get $8 + local.get $6 + local.get $12 i32.const 2 i32.shl - local.tee $2 + local.tee $1 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $7 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $12 + local.get $11 i32.const 3760 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $8 + local.get $12 i32.const 1 i32.add - local.set $8 - br $for-loop|015 + local.set $12 + br $for-loop|019 end end - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $2 i32.store offset=4 - local.get $10 + local.get $4 local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $4 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner6 + local.get $4 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner7 + local.get $4 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $8 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51530,7 +49069,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51541,17 +49080,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $0 + local.tee $11 i32.store - local.get $0 + local.get $11 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $11 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $11 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set @@ -51566,108 +49105,111 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $11 i32.load offset=8 i32.const 2 i32.shr_u - local.set $5 - local.get $0 + local.set $8 + local.get $11 i32.load offset=4 - local.set $4 - local.get $1 + local.set $6 + local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $8 i32.const 2 i32.shl local.tee $3 i32.const 0 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.store offset=4 - loop $for-loop|017 - local.get $5 + loop $for-loop|020 local.get $8 + local.get $12 i32.gt_s if - local.get $4 - local.get $8 + local.get $6 + local.get $12 i32.const 2 i32.shl - local.tee $2 + local.tee $1 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength + local.get $1 local.get $2 - local.get $7 i32.add - local.get $1 - local.get $8 local.get $0 + local.get $12 + local.get $11 i32.const 3792 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $8 + local.get $12 i32.const 1 i32.add - local.set $8 - br $for-loop|017 + local.set $12 + br $for-loop|020 end end - local.get $10 - local.get $7 + local.get $4 + local.get $2 i32.store - local.get $10 - local.get $7 - call $~lib/rt/itcms/__link - local.get $10 - local.get $7 + local.get $2 + if + local.get $4 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 + local.get $2 i32.store offset=4 - local.get $10 + local.get $4 local.get $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $4 i32.store offset=8 - local.get $10 + local.get $4 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner20 - local.get $10 + br_if $folding-inner6 + local.get $4 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 i32.ne - br_if $folding-inner21 - local.get $10 + br_if $folding-inner7 + local.get $4 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 i32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51675,7 +49217,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51686,17 +49228,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $9 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $9 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set @@ -51711,24 +49253,24 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u local.set $6 - local.get $0 + local.get $9 i32.load offset=4 - local.set $3 - local.get $1 + local.set $4 + local.get $0 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $6 @@ -51737,82 +49279,85 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 - loop $for-loop|019 + loop $for-loop|022 local.get $6 - local.get $7 + local.get $12 i32.gt_s if - local.get $3 - local.get $7 + local.get $4 + local.get $12 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $5 i32.add + local.get $10 + local.get $12 local.get $9 - local.get $7 - local.get $0 i32.const 3824 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $7 + local.get $12 i32.const 1 i32.add - local.set $7 - br $for-loop|019 + local.set $12 + br $for-loop|022 end end - local.get $8 - local.get $5 + local.get $3 + local.get $1 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 + local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 i32.store offset=4 - local.get $8 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store offset=8 - local.get $8 + local.get $3 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner6 + local.get $3 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 i64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner7 + local.get $3 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 i64.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51820,7 +49365,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51831,17 +49376,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $9 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $9 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -51856,24 +49401,24 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u local.set $6 - local.get $0 + local.get $9 i32.load offset=4 - local.set $3 - local.get $1 + local.set $4 + local.get $0 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $6 @@ -51882,82 +49427,85 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 - loop $for-loop|022 + loop $for-loop|023 local.get $6 - local.get $7 + local.get $12 i32.gt_s if - local.get $3 - local.get $7 + local.get $4 + local.get $12 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $5 i32.add + local.get $10 + local.get $12 local.get $9 - local.get $7 - local.get $0 i32.const 3856 i32.load call_indirect $0 (type $i64_i32_i32_=>_i64) i64.store - local.get $7 + local.get $12 i32.const 1 i32.add - local.set $7 - br $for-loop|022 + local.set $12 + br $for-loop|023 end end - local.get $8 - local.get $5 + local.get $3 + local.get $1 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 + local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 i32.store offset=4 - local.get $8 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store offset=8 - local.get $8 + local.get $3 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner6 + local.get $3 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 i64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner7 + local.get $3 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 i64.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -51965,7 +49513,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -51976,17 +49524,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $9 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $9 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set @@ -52001,24 +49549,24 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $9 i32.load offset=8 i32.const 2 i32.shr_u local.set $6 - local.get $0 + local.get $9 i32.load offset=4 - local.set $3 - local.get $1 + local.set $4 + local.get $0 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $6 @@ -52027,82 +49575,85 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 - loop $for-loop|024 + loop $for-loop|025 local.get $6 - local.get $7 + local.get $12 i32.gt_s if - local.get $3 - local.get $7 + local.get $4 + local.get $12 i32.const 2 i32.shl - local.tee $1 + local.tee $0 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $5 i32.add - local.get $11 - local.get $7 - local.get $0 + local.get $5 + local.get $12 + local.get $9 i32.const 3888 i32.load call_indirect $0 (type $f32_i32_i32_=>_f32) f32.store - local.get $7 + local.get $12 i32.const 1 i32.add - local.set $7 - br $for-loop|024 + local.set $12 + br $for-loop|025 end end - local.get $8 - local.get $5 + local.get $3 + local.get $1 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 + local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 i32.store offset=4 - local.get $8 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store offset=8 - local.get $8 + local.get $3 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner6 + local.get $3 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 f32.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner7 + local.get $3 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 f32.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -52110,7 +49661,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52121,17 +49672,17 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $0 + local.tee $9 i32.store - local.get $0 + local.get $9 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $9 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $9 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set @@ -52146,24 +49697,24 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $0 + local.get $9 i32.load offset=8 i32.const 3 i32.shr_u local.set $6 - local.get $0 + local.get $9 i32.load offset=4 - local.set $3 - local.get $1 + local.set $4 + local.get $0 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $8 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $6 @@ -52172,76 +49723,79 @@ local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $1 i32.store offset=4 loop $for-loop|026 local.get $6 - local.get $7 + local.get $12 i32.gt_s if - local.get $3 - local.get $7 + local.get $4 + local.get $12 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $1 - local.get $5 i32.add - local.get $12 local.get $7 - local.get $0 + local.get $12 + local.get $9 i32.const 3920 i32.load call_indirect $0 (type $f64_i32_i32_=>_f64) f64.store - local.get $7 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $12 br $for-loop|026 end end - local.get $8 - local.get $5 + local.get $3 + local.get $1 i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 + local.get $1 + if + local.get $3 + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 + local.get $1 i32.store offset=4 - local.get $8 + local.get $3 local.get $2 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $3 i32.store offset=8 - local.get $8 + local.get $3 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner20 - local.get $8 + br_if $folding-inner6 + local.get $3 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.ne - br_if $folding-inner21 - local.get $8 + br_if $folding-inner7 + local.get $3 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 9 f64.ne - br_if $folding-inner22 + br_if $folding-inner8 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -52257,6 +49811,8 @@ call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52264,7 +49820,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52289,22 +49845,20 @@ global.get $~lib/memory/__stack_pointer i32.const 4304 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|045 + local.set $2 + loop $for-loop|028 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 @@ -52312,43 +49866,43 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|045 + local.set $1 + br $for-loop|028 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4336 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.047 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|049 + local.set $2 + loop $for-loop|0329 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 @@ -52356,27 +49910,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4336 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.047 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|049 + local.set $1 + br $for-loop|0329 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52384,7 +49940,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52409,22 +49965,20 @@ global.get $~lib/memory/__stack_pointer i32.const 4368 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|051 + local.set $2 + loop $for-loop|031 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -52432,43 +49986,43 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4368 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|051 + local.set $1 + br $for-loop|031 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4400 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.053 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|054 + local.set $2 + loop $for-loop|0332 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -52476,27 +50030,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4400 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.053 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|054 + local.set $1 + br $for-loop|0332 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52504,7 +50060,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52529,22 +50085,20 @@ global.get $~lib/memory/__stack_pointer i32.const 4432 i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.057 (result i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.033 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|058 + local.set $2 + loop $for-loop|034 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -52552,43 +50106,43 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4432 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.057 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.033 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|058 + local.set $1 + br $for-loop|034 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4464 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0135 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|061 + local.set $2 + loop $for-loop|0336 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -52596,27 +50150,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4464 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0135 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|061 + local.set $1 + br $for-loop|0336 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52624,7 +50180,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52649,26 +50205,24 @@ global.get $~lib/memory/__stack_pointer i32.const 4496 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|063 + local.set $2 + loop $for-loop|037 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -52676,47 +50230,47 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4496 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|063 + local.set $1 + br $for-loop|037 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4528 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.065 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|066 + local.set $2 + loop $for-loop|0338 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -52724,27 +50278,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4528 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.065 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|066 + local.set $1 + br $for-loop|0338 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52752,7 +50308,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52777,26 +50333,24 @@ global.get $~lib/memory/__stack_pointer i32.const 4560 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|068 + local.set $2 + loop $for-loop|040 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -52804,47 +50358,47 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4560 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|068 + local.set $1 + br $for-loop|040 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4592 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.070 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|071 + local.set $2 + loop $for-loop|0341 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -52852,27 +50406,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4592 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.070 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|071 + local.set $1 + br $for-loop|0341 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -52880,7 +50436,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -52905,26 +50461,24 @@ global.get $~lib/memory/__stack_pointer i32.const 4624 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|073 + local.set $2 + loop $for-loop|043 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -52932,47 +50486,47 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4624 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|073 + local.set $1 + br $for-loop|043 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4656 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.075 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|076 + local.set $2 + loop $for-loop|0344 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -52980,27 +50534,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4656 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.075 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|076 + local.set $1 + br $for-loop|0344 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53008,7 +50564,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53033,26 +50589,24 @@ global.get $~lib/memory/__stack_pointer i32.const 4688 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|078 + local.set $2 + loop $for-loop|045 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -53060,47 +50614,47 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4688 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|078 + local.set $1 + br $for-loop|045 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4720 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.080 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|081 + local.set $2 + loop $for-loop|0346 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -53108,27 +50662,29 @@ global.set $~argumentsLength i32.const 1 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 4720 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.080 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|081 + local.set $1 + br $for-loop|0346 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53136,7 +50692,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53161,102 +50717,102 @@ global.get $~lib/memory/__stack_pointer i32.const 4752 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|083 + loop $for-loop|047 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 4752 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|083 + local.set $1 + br $for-loop|047 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4784 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.085 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|086 + loop $for-loop|0348 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 4784 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.085 + br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|086 + local.set $1 + br $for-loop|0348 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53264,7 +50820,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53289,102 +50845,102 @@ global.get $~lib/memory/__stack_pointer i32.const 4816 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|088 + loop $for-loop|050 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 4816 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|088 + local.set $1 + br $for-loop|050 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4848 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.090 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|091 + loop $for-loop|0351 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 4848 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.090 + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|091 + local.set $1 + br $for-loop|0351 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53392,7 +50948,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53417,102 +50973,102 @@ global.get $~lib/memory/__stack_pointer i32.const 4880 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|093 + loop $for-loop|053 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $11 local.get $5 + local.get $1 local.get $3 i32.const 4880 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|093 + local.set $1 + br $for-loop|053 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4912 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.095 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|096 + loop $for-loop|0354 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $11 local.get $5 + local.get $1 local.get $3 i32.const 4912 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.095 + br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|096 + local.set $1 + br $for-loop|0354 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53520,7 +51076,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -53545,102 +51101,102 @@ global.get $~lib/memory/__stack_pointer i32.const 4944 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|098 + loop $for-loop|056 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $12 - local.get $5 + local.get $7 + local.get $1 local.get $3 i32.const 4944 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|098 + local.set $1 + br $for-loop|056 end end i32.const 0 end i32.eqz - br_if $folding-inner6 + br_if $folding-inner9 global.get $~lib/memory/__stack_pointer i32.const 4976 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0100 (result i32) + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0101 + loop $for-loop|0357 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $12 - local.get $5 + local.get $7 + local.get $1 local.get $3 i32.const 4976 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0100 + br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0101 + local.set $1 + br $for-loop|0357 end end i32.const 0 end - br_if $folding-inner7 + br_if $folding-inner10 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53648,12 +51204,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $4 @@ -53673,8 +51229,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5008 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -53682,84 +51236,86 @@ i32.load offset=8 local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0103 - local.get $1 + loop $for-loop|059 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5008 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0103 + local.set $0 + br $for-loop|059 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5040 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0105 - loop $for-loop|0106 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + loop $for-loop|0360 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5040 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0105 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0106 + local.set $0 + br $for-loop|0360 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53767,12 +51323,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $4 @@ -53792,8 +51348,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5072 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -53801,84 +51355,86 @@ i32.load offset=8 local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0108 - local.get $1 + loop $for-loop|062 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5072 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0108 + local.set $0 + br $for-loop|062 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5104 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0110 - loop $for-loop|0111 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + loop $for-loop|0363 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5104 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0110 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0111 + local.set $0 + br $for-loop|0363 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -53886,12 +51442,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $4 @@ -53911,93 +51467,93 @@ global.get $~lib/memory/__stack_pointer i32.const 5136 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0114 - loop $for-loop|0115 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.064 + loop $for-loop|065 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5136 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0114 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.064 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0115 + local.set $0 + br $for-loop|065 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5168 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 local.get $4 i32.load offset=8 local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 - loop $for-loop|0118 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0166 + loop $for-loop|0367 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 local.get $3 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5168 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0166 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0118 + local.set $0 + br $for-loop|0367 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54005,12 +51561,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $4 @@ -54030,8 +51586,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5200 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -54041,12 +51595,12 @@ i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0120 - local.get $1 + loop $for-loop|068 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -54054,31 +51608,31 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5200 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0120 + local.set $0 + br $for-loop|068 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5232 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -54087,13 +51641,13 @@ i32.const 1 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0122 - loop $for-loop|0123 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + loop $for-loop|0369 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -54101,30 +51655,32 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5232 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0122 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0123 + local.set $0 + br $for-loop|0369 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54132,12 +51688,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $4 @@ -54157,8 +51713,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5264 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -54168,12 +51722,12 @@ i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0125 - local.get $1 + loop $for-loop|071 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -54181,31 +51735,31 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5264 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0125 + local.set $0 + br $for-loop|071 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5296 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -54214,13 +51768,13 @@ i32.const 1 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0127 - loop $for-loop|0128 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + loop $for-loop|0372 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $3 @@ -54228,30 +51782,32 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5296 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0127 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0128 + local.set $0 + br $for-loop|0372 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54259,12 +51815,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $4 @@ -54284,8 +51840,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5328 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -54295,12 +51849,12 @@ i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0130 - local.get $1 + loop $for-loop|073 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -54308,31 +51862,31 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5328 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0130 + local.set $0 + br $for-loop|073 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5360 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -54341,13 +51895,13 @@ i32.const 2 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0132 - loop $for-loop|0133 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + loop $for-loop|0374 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -54355,30 +51909,32 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5360 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0132 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0133 + local.set $0 + br $for-loop|0374 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54386,12 +51942,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $4 @@ -54411,8 +51967,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5392 i32.store offset=4 - i32.const 0 - local.set $1 local.get $4 i32.load offset=4 local.set $3 @@ -54422,12 +51976,12 @@ i32.shr_u local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|0135 - local.get $1 + loop $for-loop|075 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -54435,31 +51989,31 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5392 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0135 + local.set $0 + br $for-loop|075 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5424 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $4 i32.load offset=4 local.set $3 @@ -54468,13 +52022,13 @@ i32.const 2 i32.shr_u local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0137 - loop $for-loop|0138 - local.get $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + loop $for-loop|0376 + local.get $0 local.get $2 i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $3 @@ -54482,30 +52036,32 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $4 i32.const 5424 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0137 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0138 + local.set $0 + br $for-loop|0376 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54513,12 +52069,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $3 @@ -54538,8 +52094,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5456 i32.store offset=4 - i32.const 0 - local.set $1 local.get $3 i32.load offset=4 local.set $2 @@ -54547,14 +52101,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 + local.set $1 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0140 + loop $for-loop|077 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54562,31 +52116,31 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5456 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0140 + local.set $0 + br $for-loop|077 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5488 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -54594,14 +52148,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0142 - loop $for-loop|0143 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + loop $for-loop|0378 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54609,30 +52163,32 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5488 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0142 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0143 + local.set $0 + br $for-loop|0378 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54640,12 +52196,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $3 @@ -54665,8 +52221,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5520 i32.store offset=4 - i32.const 0 - local.set $1 local.get $3 i32.load offset=4 local.set $2 @@ -54674,14 +52228,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 + local.set $1 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0145 + loop $for-loop|079 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54689,31 +52243,31 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5520 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0145 + local.set $0 + br $for-loop|079 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5552 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -54721,14 +52275,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0147 - loop $for-loop|0148 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + loop $for-loop|0380 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54736,30 +52290,32 @@ i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5552 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0147 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0148 + local.set $0 + br $for-loop|0380 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54767,12 +52323,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $3 @@ -54792,8 +52348,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5584 i32.store offset=4 - i32.const 0 - local.set $1 local.get $3 i32.load offset=4 local.set $2 @@ -54801,14 +52355,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 + local.set $1 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0150 + loop $for-loop|081 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -54816,31 +52370,31 @@ f32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5584 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0150 + local.set $0 + br $for-loop|081 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -54848,14 +52402,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0152 - loop $for-loop|0153 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + loop $for-loop|0382 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -54863,30 +52417,32 @@ f32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5616 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0152 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0153 + local.set $0 + br $for-loop|0382 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -54894,12 +52450,12 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $3 @@ -54919,8 +52475,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5648 i32.store offset=4 - i32.const 0 - local.set $1 local.get $3 i32.load offset=4 local.set $2 @@ -54928,14 +52482,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 + local.set $1 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0155 + loop $for-loop|083 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54943,31 +52497,31 @@ f64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5648 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0155 + local.set $0 + br $for-loop|083 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner8 + br_if $folding-inner11 global.get $~lib/memory/__stack_pointer i32.const 5680 i32.store offset=4 i32.const 0 - local.set $1 + local.set $0 local.get $3 i32.load offset=4 local.set $2 @@ -54975,14 +52529,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0157 - loop $for-loop|0158 + local.set $1 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + loop $for-loop|0384 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 3 i32.shl local.get $2 @@ -54990,26 +52544,26 @@ f64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5680 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0157 - local.get $1 + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0158 + local.set $0 + br $for-loop|0384 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner9 + br_if $folding-inner12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55021,7 +52575,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55053,39 +52607,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0160 - local.get $1 + loop $for-loop|085 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5712 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0160 + local.set $0 + br $for-loop|085 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 5744 i32.store offset=4 @@ -55096,39 +52650,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0162 - loop $for-loop|0163 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + loop $for-loop|0386 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5744 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0162 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0163 + local.set $0 + br $for-loop|0386 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55140,7 +52694,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55172,39 +52726,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0165 - local.get $1 + loop $for-loop|087 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5776 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0165 + local.set $0 + br $for-loop|087 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 5808 i32.store offset=4 @@ -55215,39 +52769,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0167 - loop $for-loop|0168 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + loop $for-loop|0388 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5808 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0167 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0168 + local.set $0 + br $for-loop|0388 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55259,7 +52813,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55291,39 +52845,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0171 - loop $for-loop|0172 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.089 + loop $for-loop|090 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5840 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0171 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.089 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0172 + local.set $0 + br $for-loop|090 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 5872 i32.store offset=4 @@ -55334,39 +52888,39 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0174 - loop $for-loop|0175 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0191 + loop $for-loop|0392 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $2 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5872 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0174 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0191 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0175 + local.set $0 + br $for-loop|0392 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55378,7 +52932,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55412,14 +52966,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0177 - local.get $1 + loop $for-loop|093 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $2 @@ -55427,26 +52981,26 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5904 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0177 + local.set $0 + br $for-loop|093 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 5936 i32.store offset=4 @@ -55459,14 +53013,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0179 - loop $for-loop|0180 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + loop $for-loop|0394 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $2 @@ -55474,26 +53028,26 @@ i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5936 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0179 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0180 + local.set $0 + br $for-loop|0394 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55505,7 +53059,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55539,14 +53093,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0182 - local.get $1 + loop $for-loop|095 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $2 @@ -55554,26 +53108,26 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 5968 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0182 + local.set $0 + br $for-loop|095 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6000 i32.store offset=4 @@ -55586,14 +53140,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0184 - loop $for-loop|0185 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + loop $for-loop|0396 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 1 i32.shl local.get $2 @@ -55601,26 +53155,26 @@ i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6000 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0184 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0185 + local.set $0 + br $for-loop|0396 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55632,7 +53186,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55666,14 +53220,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0187 - local.get $1 + loop $for-loop|097 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -55681,26 +53235,26 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6032 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0187 + local.set $0 + br $for-loop|097 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6064 i32.store offset=4 @@ -55713,14 +53267,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0189 - loop $for-loop|0190 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + loop $for-loop|0398 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -55728,26 +53282,26 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6064 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0189 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0190 + local.set $0 + br $for-loop|0398 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55759,7 +53313,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55793,14 +53347,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|0192 - local.get $1 + loop $for-loop|099 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -55808,26 +53362,26 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6096 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0192 + local.set $0 + br $for-loop|099 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6128 i32.store offset=4 @@ -55840,14 +53394,14 @@ i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0194 - loop $for-loop|0195 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + loop $for-loop|03100 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl local.get $2 @@ -55855,26 +53409,26 @@ i32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $3 i32.const 6128 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0194 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0195 + local.set $0 + br $for-loop|03100 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -55886,7 +53440,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -55913,95 +53467,95 @@ i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0197 - local.get $1 + loop $for-loop|0101 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6160 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0197 + local.set $0 + br $for-loop|0101 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6192 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0199 - loop $for-loop|0200 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + loop $for-loop|03102 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6192 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0199 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0200 + local.set $0 + br $for-loop|03102 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56013,7 +53567,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56040,95 +53594,95 @@ i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0202 - local.get $1 + loop $for-loop|0103 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6224 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0202 + local.set $0 + br $for-loop|0103 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6256 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0204 - loop $for-loop|0205 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + loop $for-loop|03104 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6256 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0204 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0205 + local.set $0 + br $for-loop|03104 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56140,7 +53694,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56167,95 +53721,95 @@ i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0207 - local.get $1 + loop $for-loop|0105 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6288 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0207 + local.set $0 + br $for-loop|0105 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6320 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0209 - loop $for-loop|0210 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + loop $for-loop|03106 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6320 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0209 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0210 + local.set $0 + br $for-loop|03106 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -56267,7 +53821,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56294,99 +53848,101 @@ i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 + local.set $0 block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0212 - local.get $1 + loop $for-loop|0107 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add f64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6352 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0212 + local.set $0 + br $for-loop|0107 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 1 i32.ne - br_if $folding-inner10 + br_if $folding-inner13 global.get $~lib/memory/__stack_pointer i32.const 6384 i32.store offset=4 local.get $2 i32.load offset=4 - local.set $0 + local.set $1 local.get $2 i32.load offset=8 i32.const 3 i32.shr_u i32.const 1 i32.sub - local.set $1 - block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0214 - loop $for-loop|0215 - local.get $1 + local.set $0 + block $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + loop $for-loop|03108 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add f64.load i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $2 i32.const 6384 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0214 - local.get $1 + br_if $~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.01 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $for-loop|0215 + local.set $0 + br $for-loop|03108 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne - br_if $folding-inner11 + br_if $folding-inner14 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56394,7 +53950,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56419,22 +53975,20 @@ global.get $~lib/memory/__stack_pointer i32.const 6416 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0217 + local.set $2 + loop $for-loop|0109 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 @@ -56442,7 +53996,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6416 i32.load @@ -56450,36 +54004,36 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0217 + local.set $1 + br $for-loop|0109 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6448 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0219 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0220 + local.set $2 + loop $for-loop|03110 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_s local.set $0 @@ -56487,28 +54041,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6448 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0219 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0220 + local.set $1 + br $for-loop|03110 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56516,7 +54072,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56541,22 +54097,20 @@ global.get $~lib/memory/__stack_pointer i32.const 6480 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0222 + local.set $2 + loop $for-loop|0111 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -56564,7 +54118,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6480 i32.load @@ -56572,36 +54126,36 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0222 + local.set $1 + br $for-loop|0111 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6512 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0224 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0225 + local.set $2 + loop $for-loop|03112 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -56609,28 +54163,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6512 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0224 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0225 + local.set $1 + br $for-loop|03112 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56638,7 +54194,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56663,22 +54219,20 @@ global.get $~lib/memory/__stack_pointer i32.const 6544 i32.store offset=4 - i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0228 (result i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0113 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0229 + local.set $2 + loop $for-loop|0114 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -56686,44 +54240,44 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6544 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0228 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0113 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0229 + local.set $1 + br $for-loop|0114 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6576 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0231 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01115 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 - local.set $1 - loop $for-loop|0232 + local.set $2 + loop $for-loop|03116 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add i32.load8_u local.set $0 @@ -56731,28 +54285,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6576 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0231 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.01115 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0232 + local.set $1 + br $for-loop|03116 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56760,7 +54316,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56785,26 +54341,24 @@ global.get $~lib/memory/__stack_pointer i32.const 6608 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0234 + local.set $2 + loop $for-loop|0117 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -56812,7 +54366,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6608 i32.load @@ -56820,40 +54374,40 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0234 + local.set $1 + br $for-loop|0117 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6640 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0236 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0237 + local.set $2 + loop $for-loop|03118 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_s local.set $0 @@ -56861,28 +54415,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6640 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0236 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0237 + local.set $1 + br $for-loop|03118 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -56890,7 +54446,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -56915,26 +54471,24 @@ global.get $~lib/memory/__stack_pointer i32.const 6672 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0239 + local.set $2 + loop $for-loop|0119 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -56942,7 +54496,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6672 i32.load @@ -56950,40 +54504,40 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0239 + local.set $1 + br $for-loop|0119 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6704 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0241 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 1 i32.shr_u - local.set $1 - loop $for-loop|0242 + local.set $2 + loop $for-loop|03120 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 1 i32.shl - local.get $2 + local.get $3 i32.add i32.load16_u local.set $0 @@ -56991,28 +54545,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6704 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0241 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0242 + local.set $1 + br $for-loop|03120 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57020,7 +54576,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57045,26 +54601,24 @@ global.get $~lib/memory/__stack_pointer i32.const 6736 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0244 + local.set $2 + loop $for-loop|0121 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57072,7 +54626,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6736 i32.load @@ -57080,40 +54634,40 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0244 + local.set $1 + br $for-loop|0121 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6768 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0246 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0247 + local.set $2 + loop $for-loop|03122 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57121,28 +54675,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6768 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0246 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0247 + local.set $1 + br $for-loop|03122 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57150,7 +54706,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57175,26 +54731,24 @@ global.get $~lib/memory/__stack_pointer i32.const 6800 i32.store offset=4 - i32.const 0 - local.set $6 block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0249 + local.set $2 + loop $for-loop|0123 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57202,7 +54756,7 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6800 i32.load @@ -57210,40 +54764,40 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0249 + local.set $1 + br $for-loop|0123 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6832 i32.store offset=4 i32.const 0 - local.set $6 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0251 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.01 (result i32) local.get $4 i32.load offset=4 - local.set $2 + local.set $3 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 - loop $for-loop|0252 + local.set $2 + loop $for-loop|03124 local.get $1 - local.get $6 - i32.gt_s + local.get $2 + i32.lt_s if - local.get $6 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $3 i32.add i32.load local.set $0 @@ -57251,28 +54805,30 @@ global.set $~argumentsLength i32.const 0 local.get $0 - local.get $6 + local.get $1 local.get $4 i32.const 6832 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0251 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.01 drop - local.get $6 + local.get $1 i32.const 1 i32.add - local.set $6 - br $for-loop|0252 + local.set $1 + br $for-loop|03124 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57280,7 +54836,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57305,34 +54861,32 @@ global.get $~lib/memory/__stack_pointer i32.const 6864 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0254 + loop $for-loop|0125 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 6864 i32.load @@ -57340,69 +54894,71 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0254 + local.set $1 + br $for-loop|0125 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6896 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0256 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0257 + loop $for-loop|03126 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 6896 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0256 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0257 + local.set $1 + br $for-loop|03126 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57410,7 +54966,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57435,34 +54991,32 @@ global.get $~lib/memory/__stack_pointer i32.const 6928 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0259 + loop $for-loop|0127 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 6928 i32.load @@ -57470,69 +55024,71 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0259 + local.set $1 + br $for-loop|0127 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 6960 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0261 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0262 + loop $for-loop|03128 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add i64.load - local.set $9 + local.set $10 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $9 - local.get $5 + local.get $10 + local.get $1 local.get $3 i32.const 6960 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0261 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0262 + local.set $1 + br $for-loop|03128 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57540,7 +55096,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57565,34 +55121,32 @@ global.get $~lib/memory/__stack_pointer i32.const 6992 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0264 + loop $for-loop|0129 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $11 local.get $5 + local.get $1 local.get $3 i32.const 6992 i32.load @@ -57600,69 +55154,71 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0264 + local.set $1 + br $for-loop|0129 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 7024 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0266 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 2 i32.shr_u local.set $0 - loop $for-loop|0267 + loop $for-loop|03130 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add f32.load - local.set $11 + local.set $5 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $11 local.get $5 + local.get $1 local.get $3 i32.const 7024 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0266 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0267 + local.set $1 + br $for-loop|03130 end end i32.const 1 end - br_if $folding-inner13 + br_if $folding-inner16 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -57670,7 +55226,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57695,34 +55251,32 @@ global.get $~lib/memory/__stack_pointer i32.const 7056 i32.store offset=4 - i32.const 0 - local.set $5 block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0269 + loop $for-loop|0131 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $12 - local.get $5 + local.get $7 + local.get $1 local.get $3 i32.const 7056 i32.load @@ -57730,67 +55284,461 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0269 + local.set $1 + br $for-loop|0131 end end i32.const 1 end i32.eqz - br_if $folding-inner12 + br_if $folding-inner15 global.get $~lib/memory/__stack_pointer i32.const 7088 i32.store offset=4 i32.const 0 - local.set $5 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0271 (result i32) + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 (result i32) local.get $3 i32.load offset=4 - local.set $1 + local.set $2 local.get $3 i32.load offset=8 i32.const 3 i32.shr_u local.set $0 - loop $for-loop|0272 + loop $for-loop|03132 local.get $0 - local.get $5 + local.get $1 i32.gt_s if - local.get $5 + local.get $1 i32.const 3 i32.shl - local.get $1 + local.get $2 i32.add f64.load - local.set $12 + local.set $7 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $12 - local.get $5 + local.get $7 + local.get $1 local.get $3 i32.const 7088 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0271 + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.01 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0272 + local.set $1 + br $for-loop|03132 end end - i32.const 1 + i32.const 1 + end + br_if $folding-inner16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7200 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + local.set $1 + loop $for-loop|073133 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $2 + local.get $9 + i32.add + i32.load8_s + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $3 + i32.const 7200 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|073133 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7232 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + local.set $1 + loop $for-loop|076 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $2 + local.get $9 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $3 + i32.const 7232 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|076 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 7264 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + local.set $1 + loop $for-loop|080 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $2 + local.get $9 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $3 + i32.const 7264 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|080 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7296 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $1 + loop $for-loop|083134 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $9 + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.load16_s + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $3 + i32.const 7296 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|083134 + end end - br_if $folding-inner13 + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -57800,7 +55748,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57812,7 +55760,7 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $3 i32.store local.get $3 @@ -57825,8 +55773,9 @@ i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57835,8 +55784,9 @@ i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57845,46 +55795,51 @@ i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7200 + i32.const 7328 i32.store offset=8 i32.const 0 - local.set $5 + local.set $9 local.get $3 i32.load offset=4 local.set $2 local.get $3 i32.load offset=8 + i32.const 1 + i32.shr_u local.set $1 - loop $for-loop|054274 + loop $for-loop|086 local.get $1 - local.get $5 + local.get $9 i32.gt_s if + local.get $9 + i32.const 1 + i32.shl local.get $2 - local.get $5 i32.add - i32.load8_s + i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $5 + local.get $9 local.get $3 - i32.const 7200 + i32.const 7328 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|054274 + local.set $9 + br $for-loop|086 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -57896,7 +55851,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -57908,7 +55863,7 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Uint8Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $3 i32.store local.get $3 @@ -57921,9 +55876,7 @@ i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57932,9 +55885,7 @@ i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -57943,47 +55894,49 @@ i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7232 + i32.const 7360 i32.store offset=8 i32.const 0 - local.set $5 + local.set $9 local.get $3 i32.load offset=4 local.set $2 local.get $3 i32.load offset=8 + i32.const 2 + i32.shr_u local.set $1 - loop $for-loop|056 + loop $for-loop|089 local.get $1 - local.get $5 + local.get $9 i32.gt_s if + local.get $9 + i32.const 2 + i32.shl local.get $2 - local.get $5 i32.add - i32.load8_u + i32.load i32.const 3 global.set $~argumentsLength - local.get $5 + local.get $9 local.get $3 - i32.const 7232 + i32.const 7360 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|056 + local.set $9 + br $for-loop|089 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -57995,7 +55948,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58007,7 +55960,7 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $3 i32.store local.get $3 @@ -58020,9 +55973,7 @@ i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -58031,9 +55982,7 @@ i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 @@ -58042,47 +55991,49 @@ i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7264 + i32.const 7392 i32.store offset=8 i32.const 0 - local.set $5 + local.set $9 local.get $3 i32.load offset=4 local.set $2 local.get $3 i32.load offset=8 + i32.const 2 + i32.shr_u local.set $1 - loop $for-loop|059 + loop $for-loop|092 local.get $1 - local.get $5 + local.get $9 i32.gt_s if + local.get $9 + i32.const 2 + i32.shl local.get $2 - local.get $5 i32.add - i32.load8_u + i32.load i32.const 3 global.set $~argumentsLength - local.get $5 + local.get $9 local.get $3 - i32.const 7264 + i32.const 7392 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|059 + local.set $9 + br $for-loop|092 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58094,7 +56045,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58106,83 +56057,83 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 i32.store - local.get $3 + local.get $2 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 1 i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 2 i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7296 + i32.const 7424 i32.store offset=8 i32.const 0 - local.set $5 - local.get $3 + local.set $9 + local.get $2 i32.load offset=4 - local.set $2 - local.get $3 + local.set $1 + local.get $2 i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|061278 - local.get $1 - local.get $5 + local.set $0 + loop $for-loop|095135 + local.get $0 + local.get $9 i32.gt_s if - local.get $5 - i32.const 1 + local.get $9 + i32.const 3 i32.shl - local.get $2 + local.get $1 i32.add - i32.load16_s + i64.load i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 - i32.const 7296 + local.get $9 + local.get $2 + i32.const 7424 i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect $0 (type $i64_i32_i32_=>_none) + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|061278 + local.set $9 + br $for-loop|095135 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58194,7 +56145,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58206,86 +56157,183 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 i32.store - local.get $3 + local.get $2 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.const 7152 i32.const 0 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 1 i32.const 7152 i32.const 1 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 2 i32.const 7152 i32.const 2 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7328 + i32.const 7456 i32.store offset=8 i32.const 0 - local.set $5 - local.get $3 + local.set $9 + local.get $2 i32.load offset=4 - local.set $2 - local.get $3 + local.set $1 + local.get $2 i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - local.set $1 - loop $for-loop|063280 - local.get $1 - local.get $5 + local.set $0 + loop $for-loop|098 + local.get $0 + local.get $9 i32.gt_s if - local.get $5 - i32.const 1 + local.get $9 + i32.const 3 i32.shl + local.get $1 + i32.add + i64.load + i32.const 3 + global.set $~argumentsLength + local.get $9 local.get $2 + i32.const 7456 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_none) + local.get $9 + i32.const 1 i32.add - i32.load16_u + local.set $9 + br $for-loop|098 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store + local.get $2 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 7152 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 7152 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7152 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 7152 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 7488 + i32.store offset=8 + i32.const 0 + local.set $9 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|0101136 + local.get $0 + local.get $9 + i32.gt_s + if + local.get $9 + i32.const 2 + i32.shl + local.get $1 + i32.add + f32.load i32.const 3 global.set $~argumentsLength - local.get $5 - local.get $3 - i32.const 7328 + local.get $9 + local.get $2 + i32.const 7488 i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect $0 (type $f32_i32_i32_=>_none) + local.get $9 i32.const 1 i32.add - local.set $5 - br $for-loop|063280 + local.set $9 + br $for-loop|0101136 end end global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne - br_if $folding-inner14 + br_if $folding-inner17 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -58297,7 +56345,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58309,583 +56357,990 @@ global.set $std/typedarray/forEachCallCount local.get $0 i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 i32.store - local.get $3 + local.get $2 global.set $std/typedarray/forEachSelf global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.const 7152 i32.const 0 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 1 i32.const 7152 i32.const 1 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer i32.const 7152 i32.store offset=4 - local.get $3 + local.get $2 i32.const 2 i32.const 7152 i32.const 2 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7360 + i32.const 7520 i32.store offset=8 i32.const 0 - local.set $5 - local.get $3 + local.set $9 + local.get $2 i32.load offset=4 - local.set $2 - local.get $3 + local.set $1 + local.get $2 i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0104 + local.get $0 + local.get $9 + i32.gt_s + if + local.get $9 + i32.const 3 + i32.shl + local.get $1 + i32.add + f64.load + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $2 + i32.const 7520 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_none) + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0104 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner17 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16628 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 7616 + i32.store + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0106 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0106 + end + end + local.get $2 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + call $~lib/typedarray/Int8Array#__get + i32.const 7616 + local.get $3 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.extend8_s + i32.ne + br_if $folding-inner18 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|065 - local.get $1 - local.get $5 - i32.gt_s - if - local.get $5 - i32.const 2 - i32.shl - local.get $2 - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $3 - i32.const 7360 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|065 - end - end - global.get $std/typedarray/forEachCallCount + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 + i32.const 7616 i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 local.get $3 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7392 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 i32.store offset=8 + loop $for-loop|020137 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|020137 + end + end + local.get $2 + call $~lib/typedarray/Int8Array#reverse + drop i32.const 0 - local.set $5 - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u local.set $1 - loop $for-loop|067 + loop $for-loop|121 local.get $1 - local.get $5 - i32.gt_s + local.get $3 + i32.lt_s if - local.get $5 - i32.const 2 - i32.shl local.get $2 - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $5 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7616 local.get $3 - i32.const 7392 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $5 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|067 + local.set $1 + br $for-loop|121 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7424 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 i32.store offset=8 - i32.const 0 - local.set $5 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - loop $for-loop|069 - local.get $0 - local.get $5 - i32.gt_s + loop $for-loop|024108 + local.get $1 + local.get $3 + i32.lt_s if - local.get $5 - i32.const 3 - i32.shl + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $1 + i32.const 1 i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $5 + local.set $1 + br $for-loop|024108 + end + end + local.get $2 + call $~lib/typedarray/Int8Array#reverse + drop + i32.const 0 + local.set $1 + loop $for-loop|125 + local.get $1 + local.get $3 + i32.lt_s + if local.get $2 - i32.const 7424 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $5 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7616 + local.get $3 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|069 + local.set $1 + br $for-loop|125 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7456 + local.get $3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 i32.store offset=8 - i32.const 0 - local.set $5 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - loop $for-loop|071285 - local.get $0 - local.get $5 - i32.gt_s + loop $for-loop|028138 + local.get $1 + local.get $3 + i32.lt_s if - local.get $5 - i32.const 3 - i32.shl + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $1 + i32.const 1 i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $5 + local.set $1 + br $for-loop|028138 + end + end + local.get $2 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $1 + loop $for-loop|129 + local.get $1 + local.get $3 + i32.lt_s + if local.get $2 - i32.const 7456 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $5 + local.get $1 + call $~lib/typedarray/Int16Array#__get + i32.const 7616 + local.get $3 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|071285 + local.set $1 + br $for-loop|129 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7488 + local.get $3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 i32.store offset=8 - i32.const 0 - local.set $5 - local.get $2 - i32.load offset=4 - local.set $1 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - loop $for-loop|073287 - local.get $0 - local.get $5 - i32.gt_s + loop $for-loop|032 + local.get $1 + local.get $3 + i32.lt_s if - local.get $5 - i32.const 2 - i32.shl + local.get $2 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.get $1 + i32.const 7616 local.get $1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $5 + local.set $1 + br $for-loop|032 + end + end + local.get $2 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $1 + loop $for-loop|133 + local.get $1 + local.get $3 + i32.lt_s + if local.get $2 - i32.const 7488 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_none) - local.get $5 + local.get $1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7616 + local.get $3 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|073287 + local.set $1 + br $for-loop|133 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $0 i32.const 3 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 i64.store local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount + i32.store offset=16 local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 + i32.const 7616 i32.store - local.get $2 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 7152 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.const 7152 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 7152 + local.get $0 + i32.const 7628 + i32.load + local.tee $11 + call $~lib/typedarray/Int32Array#constructor + local.tee $8 i32.store offset=4 - local.get $2 - i32.const 2 - i32.const 7152 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - i32.const 7520 + local.get $11 + call $~lib/typedarray/Int32Array#constructor + local.tee $9 i32.store offset=8 + loop $for-loop|036 + local.get $1 + local.get $11 + i32.lt_s + if + local.get $8 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $9 + local.get $1 + i32.const 7616 + local.get $1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|036 + end + end i32.const 0 - local.set $5 - local.get $2 - i32.load offset=4 local.set $1 - local.get $2 + local.get $8 + i32.load offset=4 + local.set $6 + local.get $8 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|075 + local.tee $0 + i32.const 1 + i32.gt_u + if local.get $0 - local.get $5 - i32.gt_s + i32.const 1 + i32.shr_u + local.set $4 + local.get $0 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $0 + i32.load + local.set $2 + local.get $0 + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $2 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|137 + local.get $1 + local.get $11 + i32.lt_s if - local.get $5 - i32.const 3 - i32.shl + local.get $8 + local.get $1 + call $~lib/typedarray/Int32Array#__get + i32.const 7616 + local.get $11 + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__get + i32.ne + br_if $folding-inner18 local.get $1 - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $5 - local.get $2 - i32.const 7520 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_none) - local.get $5 i32.const 1 i32.add - local.set $5 - br $for-loop|075 + local.set $1 + br $for-loop|137 end end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + i32.const 0 + local.set $9 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0140 + local.get $3 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + i32.load + local.set $1 + local.get $0 + local.get $2 + local.get $9 + i32.sub + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $1 + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0140 + end + end + end + local.get $6 + i32.store offset=16 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 8 + i32.ne + br_if $folding-inner19 + local.get $6 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 7 + i32.ne + br_if $folding-inner20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.ne + br_if $folding-inner21 + local.get $6 i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 5 i32.ne - br_if $folding-inner14 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -58893,7 +57348,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -58910,114 +57365,217 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 + local.tee $11 + call $~lib/typedarray/Uint32Array#constructor + local.tee $8 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.get $11 + call $~lib/typedarray/Uint32Array#constructor + local.tee $9 i32.store offset=8 - loop $for-loop|028 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|040141 + local.get $1 + local.get $11 + i32.lt_s if - local.get $0 - local.get $3 + local.get $8 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set + call $~lib/typedarray/Uint32Array#__set + local.get $9 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|028 + local.set $1 + br $for-loop|040141 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 - local.get $3 - call $~lib/typedarray/Int8Array#__get + local.set $1 + local.get $8 + i32.load offset=4 + local.set $6 + local.get $8 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $4 + local.get $0 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0143 + local.get $1 + local.get $4 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $0 + i32.load + local.set $2 + local.get $0 + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $6 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $2 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0143 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|141 + local.get $1 + local.get $11 + i32.lt_s + if + local.get $8 + local.get $1 + call $~lib/typedarray/Uint32Array#__get i32.const 7616 - local.get $2 + local.get $11 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.extend8_s i32.ne - br_if $folding-inner24 - local.get $3 + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|1 + local.set $1 + br $for-loop|141 end end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 4 + local.get $9 i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.set $1 + call $~lib/typedarray/Uint32Array#subarray + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $6 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse + i32.const 0 + local.set $9 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0145 + local.get $3 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + i32.load + local.set $1 + local.get $0 + local.get $2 + local.get $9 + i32.sub + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + i32.load + i32.store + local.get $0 + local.get $1 + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0145 + end + end + end + local.get $6 i32.store offset=16 - local.get $0 + local.get $6 i32.const 0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 8 i32.ne - br_if $folding-inner25 - local.get $0 + br_if $folding-inner19 + local.get $6 i32.const 1 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 7 i32.ne - br_if $folding-inner26 - local.get $0 + br_if $folding-inner20 + local.get $6 i32.const 2 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 6 i32.ne - br_if $folding-inner27 - local.get $0 + br_if $folding-inner21 + local.get $6 i32.const 3 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 5 i32.ne - br_if $folding-inner28 + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59025,7 +57583,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59042,116 +57600,220 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $9 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.get $9 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|030 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|044 + local.get $1 + local.get $9 + i32.lt_s if - local.get $0 - local.get $3 + local.get $6 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $8 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $3 + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|030 + local.set $1 + br $for-loop|044 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|131 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 + local.set $1 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0146 + local.get $1 local.get $3 - call $~lib/typedarray/Uint8Array#__get + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0146 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|145 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $1 + call $~lib/typedarray/Int64Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - br_if $folding-inner24 - local.get $3 + i64.extend_i32_s + i64.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|131 + local.set $1 + br $for-loop|145 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.set $1 + call $~lib/typedarray/Int64Array#subarray + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse + i32.const 0 + local.set $9 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0148 + local.get $2 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $1 + local.get $9 + i32.sub + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0148 + end + end + end + local.get $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne - br_if $folding-inner25 - local.get $0 + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne + br_if $folding-inner19 + local.get $4 i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne - br_if $folding-inner26 - local.get $0 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.ne + br_if $folding-inner20 + local.get $4 i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne - br_if $folding-inner27 - local.get $0 + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.ne + br_if $folding-inner21 + local.get $4 i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - br_if $folding-inner28 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59159,7 +57821,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59176,116 +57838,220 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.tee $9 + call $~lib/typedarray/Uint64Array#constructor + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + local.get $9 + call $~lib/typedarray/Uint64Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|032 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|048 + local.get $1 + local.get $9 + i32.lt_s if - local.get $0 - local.get $3 + local.get $6 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $8 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|032 + local.set $1 + br $for-loop|048 end end - local.get $0 - call $~lib/typedarray/Int8Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|133 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 + local.set $1 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0150 + local.get $1 local.get $3 - call $~lib/typedarray/Uint8ClampedArray#__get + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0150 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|149 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $1 + call $~lib/typedarray/Uint64Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - br_if $folding-inner24 - local.get $3 + i64.extend_i32_s + i64.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|133 + local.set $1 + br $for-loop|149 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $1 + call $~lib/typedarray/Uint64Array#subarray + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int8Array#reverse + i32.const 0 + local.set $9 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0152 + local.get $2 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + i64.load + local.set $10 + local.get $0 + local.get $1 + local.get $9 + i32.sub + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + i64.load + i64.store + local.get $0 + local.get $10 + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0152 + end + end + end + local.get $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 - i32.ne - br_if $folding-inner25 - local.get $0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne + br_if $folding-inner19 + local.get $4 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.ne - br_if $folding-inner26 - local.get $0 + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.ne + br_if $folding-inner20 + local.get $4 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.ne - br_if $folding-inner27 - local.get $0 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.ne + br_if $folding-inner21 + local.get $4 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - br_if $folding-inner28 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59293,7 +58059,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59310,113 +58076,220 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 + local.tee $9 + call $~lib/typedarray/Float32Array#constructor + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 + local.get $9 + call $~lib/typedarray/Float32Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|034 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|052110 + local.get $1 + local.get $9 + i32.lt_s if - local.get $0 - local.get $3 + local.get $6 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $8 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $3 + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|034 + local.set $1 + br $for-loop|052110 end end - local.get $0 - call $~lib/typedarray/Int16Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|135 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 + local.set $1 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0153 + local.get $1 local.get $3 - call $~lib/typedarray/Int16Array#__get + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + f32.load + local.set $5 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $4 + i32.add + local.tee $0 + f32.load + f32.store + local.get $0 + local.get $5 + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0153 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|153 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $1 + call $~lib/typedarray/Float32Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.extend16_s - i32.ne - br_if $folding-inner24 - local.get $3 + f32.convert_i32_s + f32.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|135 + local.set $1 + br $for-loop|153 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.set $1 + call $~lib/typedarray/Float32Array#subarray + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int16Array#reverse + i32.const 0 + local.set $9 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0155 + local.get $2 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 2 + i32.shl + local.get $3 + i32.add + local.tee $0 + f32.load + local.set $5 + local.get $0 + local.get $1 + local.get $9 + i32.sub + i32.const 2 + i32.shl + local.get $3 + i32.add + local.tee $0 + f32.load + f32.store + local.get $0 + local.get $5 + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0155 + end + end + end + local.get $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.ne - br_if $folding-inner25 - local.get $0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne + br_if $folding-inner19 + local.get $4 i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.ne - br_if $folding-inner26 - local.get $0 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne + br_if $folding-inner20 + local.get $4 i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne - br_if $folding-inner27 - local.get $0 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne + br_if $folding-inner21 + local.get $4 i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - br_if $folding-inner28 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -59424,7 +58297,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59441,120 +58314,219 @@ local.get $0 i32.const 7628 i32.load - local.tee $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 + local.tee $9 + call $~lib/typedarray/Float64Array#constructor + local.tee $6 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 + local.get $9 + call $~lib/typedarray/Float64Array#constructor + local.tee $8 i32.store offset=8 - loop $for-loop|037 - local.get $2 - local.get $3 - i32.gt_s + loop $for-loop|056156 + local.get $1 + local.get $9 + i32.lt_s if - local.get $0 - local.get $3 + local.get $6 + local.get $1 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $8 local.get $1 - local.get $3 i32.const 7616 - local.get $3 + local.get $1 call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $3 + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|037 + local.set $1 + br $for-loop|056156 end end - local.get $0 - call $~lib/typedarray/Int16Array#reverse - drop i32.const 0 - local.set $3 - loop $for-loop|138 - local.get $2 - local.get $3 - i32.gt_s - if - local.get $0 + local.set $1 + local.get $6 + i32.load offset=4 + local.set $4 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|0157 + local.get $1 local.get $3 - call $~lib/typedarray/Uint16Array#__get + i32.lt_u + if + local.get $1 + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + f64.load + local.set $7 + local.get $0 + local.get $2 + local.get $1 + i32.sub + i32.const 3 + i32.shl + local.get $4 + i32.add + local.tee $0 + f64.load + f64.store + local.get $0 + local.get $7 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0157 + end + end + end + i32.const 0 + local.set $1 + loop $for-loop|157 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $6 + local.get $1 + call $~lib/typedarray/Float64Array#__get i32.const 7616 - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $3 + local.get $1 i32.sub call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - br_if $folding-inner24 - local.get $3 + f64.convert_i32_s + f64.ne + br_if $folding-inner18 + local.get $1 i32.const 1 i32.add - local.set $3 - br $for-loop|138 + local.set $1 + br $for-loop|157 end end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $8 + i32.const 4 i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.set $1 + call $~lib/typedarray/Float64Array#subarray + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=12 - local.get $1 - call $~lib/typedarray/Int16Array#reverse + i32.const 0 + local.set $9 + local.get $4 + i32.load offset=4 + local.set $3 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|0159 + local.get $2 + local.get $9 + i32.gt_u + if + local.get $9 + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + f64.load + local.set $7 + local.get $0 + local.get $1 + local.get $9 + i32.sub + i32.const 3 + i32.shl + local.get $3 + i32.add + local.tee $0 + f64.load + f64.store + local.get $0 + local.get $7 + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $while-continue|0159 + end + end + end + local.get $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 - i32.ne - br_if $folding-inner25 - local.get $0 + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.ne + br_if $folding-inner19 + local.get $4 i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.ne - br_if $folding-inner26 - local.get $0 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.ne + br_if $folding-inner20 + local.get $4 i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.ne - br_if $folding-inner27 - local.get $0 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.ne + br_if $folding-inner21 + local.get $4 i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne - br_if $folding-inner28 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne + br_if $folding-inner22 global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> @@ -59585,15 +58557,12 @@ i32.const 3 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|0 + loop $while-continue|0160 local.get $0 local.get $3 i32.lt_s @@ -59612,7 +58581,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|0 + br $while-continue|0160 end end i32.const -1 @@ -59630,50 +58599,46 @@ unreachable end i32.const 0 - local.set $5 + local.set $1 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) i32.const 0 local.get $4 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $1 - i32.const 0 - local.get $1 - select + local.tee $2 i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|0289 + loop $while-continue|060 local.get $1 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if i32.const 1 - i32.const 1 - local.get $5 + local.get $1 i32.const 3 i32.shl local.get $0 i32.add f64.load - local.tee $12 - local.get $12 - f64.ne - local.get $12 + local.tee $7 f64.const nan:0x8000000000000 f64.eq - select + local.get $7 + local.get $7 + f64.ne + i32.or br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $while-continue|0289 + local.set $1 + br $while-continue|060 end end i32.const 0 @@ -59706,15 +58671,12 @@ i32.const 2 i32.shr_u local.tee $3 - i32.const 0 - local.get $3 - select i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $4 i32.load offset=4 local.set $2 - loop $while-continue|0290 + loop $while-continue|062 local.get $0 local.get $3 i32.lt_s @@ -59733,7 +58695,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|0290 + br $while-continue|062 end end i32.const -1 @@ -59751,50 +58713,46 @@ unreachable end i32.const 0 - local.set $5 + local.set $1 block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) i32.const 0 local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $1 - i32.const 0 - local.get $1 - select + local.tee $2 i32.eqz br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop local.get $4 i32.load offset=4 local.set $0 - loop $while-continue|078 + loop $while-continue|064 local.get $1 - local.get $5 - i32.gt_s + local.get $2 + i32.lt_s if i32.const 1 - i32.const 1 - local.get $5 + local.get $1 i32.const 2 i32.shl local.get $0 i32.add f32.load - local.tee $11 - local.get $11 - f32.ne - local.get $11 + local.tee $5 f32.const nan:0x400000 f32.eq - select + local.get $5 + local.get $5 + f32.ne + i32.or br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $while-continue|078 + local.set $1 + br $while-continue|064 end end i32.const 0 @@ -59815,7 +58773,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59864,7 +58822,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -59872,7 +58830,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -59898,7 +58856,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59910,7 +58868,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -59959,7 +58917,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 local.get $1 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -59974,7 +58932,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -59986,7 +58944,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60035,7 +58993,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 local.get $1 call $~lib/typedarray/Uint8Array#toString local.set $1 @@ -60050,7 +59008,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60062,7 +59020,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60111,7 +59069,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60119,7 +59077,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60145,7 +59103,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60157,7 +59115,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60206,7 +59164,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60214,7 +59172,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60240,7 +59198,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60252,7 +59210,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60301,7 +59259,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60309,7 +59267,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60335,7 +59293,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60347,7 +59305,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60396,7 +59354,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60404,7 +59362,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60430,7 +59388,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60442,7 +59400,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60491,7 +59449,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60499,7 +59457,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60525,7 +59483,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60537,7 +59495,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60586,7 +59544,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner15 + br_if $folding-inner23 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60594,7 +59552,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60620,7 +59578,7 @@ i32.const 9616 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner16 + br_if $folding-inner24 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60632,7 +59590,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60681,7 +59639,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner17 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60689,7 +59647,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60715,7 +59673,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner18 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60727,7 +59685,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60776,7 +59734,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner17 + br_if $folding-inner25 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -60784,7 +59742,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -60810,7 +59768,7 @@ i32.const 10800 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner18 + br_if $folding-inner26 global.get $~lib/memory/__stack_pointer i32.const 16 i32.add @@ -60862,7 +59820,7 @@ unreachable end i32.const 0 - local.set $2 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60870,7 +59828,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -60887,49 +59845,49 @@ local.get $0 i32.const 10940 i32.load - local.tee $3 - call $~lib/typedarray/Int8Array#constructor local.tee $6 + call $~lib/typedarray/Int8Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|041 - local.get $2 - local.get $3 - i32.lt_s + loop $for-loop|069 + local.get $6 + local.get $9 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $9 i32.const 10928 - local.get $2 + local.get $9 call $~lib/array/Array#__get i32.extend8_s call $~lib/typedarray/Int8Array#__set - local.get $2 + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|041 + local.set $9 + br $for-loop|069 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 + local.tee $3 i32.store offset=12 i32.const 1 global.set $~argumentsLength @@ -60941,60 +59899,63 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 20 i32.sub i32.load offset=16 - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.store offset=8 local.get $1 - local.get $4 + i32.store offset=8 + local.get $0 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 i32.const 0 - local.set $2 - loop $for-loop|142 - local.get $2 - local.get $3 - i32.lt_s + local.set $9 + loop $for-loop|171 + local.get $6 + local.get $9 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $9 call $~lib/typedarray/Int8Array#__get - local.get $1 - local.get $2 + local.get $0 + local.get $9 call $~lib/typedarray/Int8Array#__get i32.ne - br_if $folding-inner29 - local.get $2 + br_if $folding-inner27 + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|142 + local.set $9 + br $for-loop|171 end end global.get $~lib/memory/__stack_pointer @@ -61010,7 +59971,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61027,16 +59988,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor local.tee $3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 i32.store offset=4 - loop $for-loop|043 + loop $for-loop|074 local.get $1 - local.get $2 + local.get $3 i32.lt_s if - local.get $3 + local.get $2 local.get $1 i32.const 10928 local.get $1 @@ -61048,26 +60009,26 @@ i32.const 1 i32.add local.set $1 - br $for-loop|043 + br $for-loop|074 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $3 + local.get $2 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $3 + local.get $2 i32.load offset=4 - local.get $3 + local.get $2 i32.load i32.sub local.tee $0 - local.get $0 - local.get $3 + local.get $2 i32.load offset=8 + local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice local.tee $0 @@ -61082,24 +60043,24 @@ i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|144 + loop $for-loop|177 local.get $1 - local.get $2 + local.get $3 i32.lt_s if - local.get $3 + local.get $2 local.get $1 call $~lib/typedarray/Uint8Array#__get local.get $0 local.get $1 call $~lib/typedarray/Uint8Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|144 + br $for-loop|177 end end global.get $~lib/memory/__stack_pointer @@ -61107,7 +60068,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $2 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61115,7 +60076,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61132,50 +60093,50 @@ local.get $0 i32.const 10940 i32.load - local.tee $3 - call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|047 - local.get $2 - local.get $3 - i32.lt_s + loop $for-loop|080131 + local.get $6 + local.get $9 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $9 i32.const 10928 - local.get $2 + local.get $9 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|047 + local.set $9 + br $for-loop|080131 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 + local.tee $3 i32.store offset=12 i32.const 1 global.set $~argumentsLength @@ -61187,60 +60148,63 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $4 + local.get $3 i32.const 20 i32.sub i32.load offset=16 - local.set $0 - local.get $1 + local.set $1 + local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.store - local.get $1 - local.get $4 - call $~lib/rt/itcms/__link - local.get $1 + local.get $3 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - i32.store offset=8 local.get $1 - local.get $4 + i32.store offset=8 + local.get $0 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=16 i32.const 0 - local.set $2 - loop $for-loop|148 - local.get $2 - local.get $3 - i32.lt_s + local.set $9 + loop $for-loop|183 + local.get $6 + local.get $9 + i32.gt_s if - local.get $6 - local.get $2 + local.get $4 + local.get $9 call $~lib/typedarray/Uint8ClampedArray#__get - local.get $1 - local.get $2 + local.get $0 + local.get $9 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne - br_if $folding-inner29 - local.get $2 + br_if $folding-inner27 + local.get $9 i32.const 1 i32.add - local.set $2 - br $for-loop|148 + local.set $9 + br $for-loop|183 end end global.get $~lib/memory/__stack_pointer @@ -61256,7 +60220,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61273,16 +60237,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Int16Array#constructor local.tee $6 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|053 + loop $for-loop|086139 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61293,24 +60257,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|053 + br $for-loop|086139 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61327,7 +60291,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61335,54 +60299,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 1 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|154 + loop $for-loop|189 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Int16Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Int16Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|154 + br $for-loop|189 end end global.get $~lib/memory/__stack_pointer @@ -61398,7 +60365,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61415,16 +60382,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Uint16Array#constructor local.tee $6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|057 + loop $for-loop|092147 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61436,24 +60403,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|057 + br $for-loop|092147 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61470,7 +60437,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61478,54 +60445,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 1 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|158 + loop $for-loop|195 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Uint16Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Uint16Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|158 + br $for-loop|195 end end global.get $~lib/memory/__stack_pointer @@ -61541,7 +60511,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61558,16 +60528,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Int32Array#constructor local.tee $6 + call $~lib/typedarray/Int32Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|060 + loop $for-loop|098155 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61577,24 +60547,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|060 + br $for-loop|098155 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61611,7 +60581,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61619,54 +60589,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 3 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|161 + loop $for-loop|1101 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Int32Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Int32Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|161 + br $for-loop|1101 end end global.get $~lib/memory/__stack_pointer @@ -61682,7 +60655,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61699,16 +60672,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Uint32Array#constructor local.tee $6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|064 + loop $for-loop|0104163 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61718,24 +60691,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|064 + br $for-loop|0104163 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61752,7 +60725,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61760,54 +60733,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 3 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|165 + loop $for-loop|1107 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Uint32Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Uint32Array#__get i32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|165 + br $for-loop|1107 end end global.get $~lib/memory/__stack_pointer @@ -61823,7 +60799,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61840,16 +60816,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Int64Array#constructor local.tee $6 + call $~lib/typedarray/Int64Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|070 + loop $for-loop|0110 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -61860,24 +60836,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|070 + br $for-loop|0110 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -61894,7 +60870,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -61902,54 +60878,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 7 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|171 + loop $for-loop|1113 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Int64Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Int64Array#__get i64.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|171 + br $for-loop|1113 end end global.get $~lib/memory/__stack_pointer @@ -61965,7 +60944,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -61982,16 +60961,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Uint64Array#constructor local.tee $6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|074 + loop $for-loop|0116 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -62002,24 +60981,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|074 + br $for-loop|0116 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -62036,7 +61015,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62044,54 +61023,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 7 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|175 + loop $for-loop|1119 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Uint64Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Uint64Array#__get i64.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|175 + br $for-loop|1119 end end global.get $~lib/memory/__stack_pointer @@ -62107,7 +61089,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62124,16 +61106,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Float32Array#constructor local.tee $6 + call $~lib/typedarray/Float32Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|077 + loop $for-loop|0122 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -62144,24 +61126,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|077 + br $for-loop|0122 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -62178,7 +61160,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62186,54 +61168,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 3 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|178 + loop $for-loop|1125 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Float32Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Float32Array#__get f32.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|178 + br $for-loop|1125 end end global.get $~lib/memory/__stack_pointer @@ -62249,7 +61234,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62266,16 +61251,16 @@ local.get $0 i32.const 10940 i32.load - local.tee $2 - call $~lib/typedarray/Float64Array#constructor local.tee $6 + call $~lib/typedarray/Float64Array#constructor + local.tee $4 i32.store offset=4 - loop $for-loop|080 + loop $for-loop|0128 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 i32.const 10928 local.get $1 @@ -62286,24 +61271,24 @@ i32.const 1 i32.add local.set $1 - br $for-loop|080 + br $for-loop|0128 end end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $4 i32.load local.tee $0 i32.store offset=8 local.get $1 local.get $0 - local.get $6 + local.get $4 i32.load offset=4 - local.get $6 + local.get $4 i32.load i32.sub local.tee $0 - local.get $6 + local.get $4 i32.load offset=8 local.get $0 i32.add @@ -62320,7 +61305,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62328,54 +61313,57 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $0 + local.tee $1 i32.const 7 i32.and - br_if $folding-inner30 + br_if $folding-inner28 global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 local.get $3 i32.store - local.get $4 local.get $3 - call $~lib/rt/itcms/__link - local.get $4 + if + local.get $0 + local.get $3 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 + local.get $1 i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 - loop $for-loop|181 + loop $for-loop|1131 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $6 + local.get $4 local.get $1 call $~lib/typedarray/Float64Array#__get - local.get $4 + local.get $0 local.get $1 call $~lib/typedarray/Float64Array#__get f64.ne - br_if $folding-inner29 + br_if $folding-inner27 local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|181 + br $for-loop|1131 end end global.get $~lib/memory/__stack_pointer @@ -62396,105 +61384,107 @@ global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $7 + local.tee $6 i32.store offset=24 global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 f32.const 400 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const inf call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Int64Array#constructor - local.tee $5 + local.tee $3 i32.store offset=8 - local.get $5 + local.get $3 i32.const 0 i64.const -10 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $3 i32.const 1 i64.const 100 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $3 i32.const 2 i64.const 10 call $~lib/typedarray/Int64Array#__set - local.get $5 + local.get $3 i32.const 3 i64.const 300 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 2 call $~lib/typedarray/Int32Array#constructor - local.tee $0 + local.tee $4 i32.store offset=16 - local.get $0 + local.get $4 i32.const 0 i32.const 300 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $4 i32.const 1 i32.const -1 call $~lib/typedarray/Int32Array#__set - local.get $7 + i32.const 0 + local.set $9 + local.get $6 i32.load offset=8 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.const 1 i32.add i32.lt_s - br_if $folding-inner19 - local.get $7 + br_if $folding-inner29 + local.get $6 i32.load offset=4 i32.const 1 i32.add - local.set $4 - local.get $1 + local.set $2 + local.get $0 i32.load offset=4 - local.set $3 - local.get $1 + local.set $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $2 - loop $for-loop|082 - local.get $2 - local.get $16 + local.set $0 + loop $for-loop|0135 + local.get $0 + local.get $9 i32.gt_s if - local.get $4 - local.get $16 + local.get $2 + local.get $9 i32.add - local.get $16 + local.get $9 i32.const 2 i32.shl - local.get $3 + local.get $1 i32.add f32.load - local.tee $11 - local.get $11 + local.tee $5 + local.get $5 f32.sub f32.const 0 f32.eq if (result i32) f32.const 0 f32.const 255 - local.get $11 + local.get $5 f32.min f32.max i32.trunc_f32_u @@ -62502,75 +61492,75 @@ i32.const 0 end i32.store8 - local.get $16 + local.get $9 i32.const 1 i32.add - local.set $16 - br $for-loop|082 + local.set $9 + br $for-loop|0135 end end - local.get $7 - local.get $5 + local.get $6 + local.get $3 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> i32.const 0 - local.set $6 - local.get $7 + local.set $9 + local.get $6 i32.load offset=8 - local.get $0 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u i32.const 8 i32.add i32.lt_s - br_if $folding-inner19 - local.get $7 + br_if $folding-inner29 + local.get $6 i32.load offset=4 i32.const 8 i32.add - local.set $2 - local.get $0 + local.set $3 + local.get $4 i32.load offset=4 - local.set $1 - local.get $0 + local.set $2 + local.get $4 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 - loop $for-loop|086311 - local.get $0 - local.get $6 + local.set $1 + loop $for-loop|0139 + local.get $1 + local.get $9 i32.gt_s if - local.get $2 - local.get $6 + local.get $3 + local.get $9 i32.add - local.get $6 + i32.const 255 + local.get $9 i32.const 2 i32.shl - local.get $1 + local.get $2 i32.add i32.load - local.tee $3 - i32.const 255 - local.get $3 + local.tee $0 i32.sub i32.const 31 i32.shr_s + local.get $0 i32.or - local.get $3 + local.get $0 i32.const 31 i32.shr_s i32.const -1 i32.xor i32.and i32.store8 - local.get $6 + local.get $9 i32.const 1 i32.add - local.set $6 - br $for-loop|086311 + local.set $9 + br $for-loop|0139 end end i32.const 10 @@ -62582,7 +61572,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $7 + local.get $6 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer @@ -62628,16 +61618,16 @@ i32.const 300 call $~lib/typedarray/Int16Array#__set i32.const 0 - local.set $6 - local.get $7 + local.set $9 + local.get $6 i32.load offset=8 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.lt_s - br_if $folding-inner19 - local.get $7 + br_if $folding-inner29 + local.get $6 i32.load offset=4 local.set $3 local.get $0 @@ -62648,16 +61638,16 @@ i32.const 2 i32.shr_u local.set $1 - loop $for-loop|090 + loop $for-loop|0143 local.get $1 - local.get $6 + local.get $9 i32.gt_s if local.get $3 - local.get $6 + local.get $9 i32.add i32.const 255 - local.get $6 + local.get $9 i32.const 2 i32.shl local.get $2 @@ -62669,14 +61659,14 @@ i32.gt_u select i32.store8 - local.get $6 + local.get $9 i32.const 1 i32.add - local.set $6 - br $for-loop|090 + local.set $9 + br $for-loop|0143 end end - local.get $7 + local.get $6 local.get $4 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> @@ -62689,7 +61679,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $7 + local.get $6 local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> i32.const 0 @@ -62701,7 +61691,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62736,7 +61726,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -62771,19 +61761,19 @@ call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner30 local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner31 local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15376 i32.store offset=8 @@ -62798,19 +61788,19 @@ call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner33 local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner34 local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62824,7 +61814,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62859,15 +61849,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of184 - block $0of185 - block $outOfRange86 + block $1of1161 + block $0of1162 + block $outOfRange163 global.get $~argumentsLength - br_table $0of185 $1of184 $outOfRange86 + br_table $0of1162 $1of1161 $outOfRange163 end unreachable end @@ -62894,19 +61884,19 @@ call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner30 local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner31 local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15440 i32.store offset=8 @@ -62921,19 +61911,19 @@ call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner33 local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner34 local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -62947,7 +61937,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -62982,15 +61972,15 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of188 - block $0of189 - block $outOfRange90 + block $1of1164 + block $0of1165 + block $outOfRange166 global.get $~argumentsLength - br_table $0of189 $1of188 $outOfRange90 + br_table $0of1165 $1of1164 $outOfRange166 end unreachable end @@ -63017,19 +62007,19 @@ call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner31 + br_if $folding-inner30 local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne - br_if $folding-inner32 + br_if $folding-inner31 local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15504 i32.store offset=8 @@ -63044,25 +62034,23 @@ call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne - br_if $folding-inner34 + br_if $folding-inner33 local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne - br_if $folding-inner35 + br_if $folding-inner34 local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63070,7 +62058,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63081,23 +62069,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63105,91 +62095,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of192 - block $0of193 - block $outOfRange94 + block $1of1167 + block $0of1168 + block $outOfRange199 global.get $~argumentsLength - br_table $0of193 $1of192 $outOfRange94 + br_table $0of1168 $1of1167 $outOfRange199 end unreachable end i32.const 15536 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15536 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 2 i32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15568 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u i32.const 15568 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 2 i32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63197,7 +62185,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63208,23 +62196,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63232,91 +62222,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of196 - block $0of197 - block $outOfRange98 + block $1of1202 + block $0of1203 + block $outOfRange204 global.get $~argumentsLength - br_table $0of197 $1of196 $outOfRange98 + br_table $0of1203 $1of1202 $outOfRange204 end unreachable end i32.const 15600 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15600 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15632 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 1 i32.shr_u i32.const 15632 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63324,7 +62312,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63335,23 +62323,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63359,91 +62349,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1100 - block $0of1101 - block $outOfRange102 + block $1of1207 + block $0of1208 + block $outOfRange209 global.get $~argumentsLength - br_table $0of1101 $1of1100 $outOfRange102 + br_table $0of1208 $1of1207 $outOfRange209 end unreachable end i32.const 15664 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15664 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 i32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15696 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u i32.const 15696 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 i32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63451,7 +62439,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63462,23 +62450,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $2 + local.get $1 i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63486,91 +62476,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1104 - block $0of1105 - block $outOfRange106 + block $1of1212 + block $0of1213 + block $outOfRange214 global.get $~argumentsLength - br_table $0of1105 $1of1104 $outOfRange106 + br_table $0of1213 $1of1212 $outOfRange214 end unreachable end i32.const 15728 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15728 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15760 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u i32.const 15760 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63578,7 +62566,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63589,23 +62577,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $1 i32.const 0 i64.const 3 call $~lib/typedarray/Int64Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63613,91 +62603,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1108 - block $0of1109 - block $outOfRange110 + block $1of1217 + block $0of1218 + block $outOfRange219 global.get $~argumentsLength - br_table $0of1109 $1of1108 $outOfRange110 + br_table $0of1218 $1of1217 $outOfRange219 end unreachable end i32.const 15792 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15792 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 2 i64.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15824 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.const 15824 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 2 i64.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63705,7 +62693,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63716,23 +62704,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $2 + local.get $1 i32.const 0 i64.const 3 call $~lib/typedarray/Uint64Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63740,91 +62730,89 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1112 - block $0of1113 - block $outOfRange114 + block $1of1222 + block $0of1223 + block $outOfRange224 global.get $~argumentsLength - br_table $0of1113 $1of1112 $outOfRange114 + br_table $0of1223 $1of1222 $outOfRange224 end unreachable end i32.const 15856 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15856 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15888 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u i32.const 15888 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63832,7 +62820,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63843,23 +62831,25 @@ local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 2 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $2 + local.get $1 i32.const 0 f32.const 3 call $~lib/typedarray/Float32Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -63867,85 +62857,85 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of1116 - block $0of1117 - block $outOfRange118 + block $1of1227 + block $0of1228 + block $outOfRange229 global.get $~argumentsLength - br_table $0of1117 $1of1116 $outOfRange118 + br_table $0of1228 $1of1227 $outOfRange229 end unreachable end i32.const 15920 - local.set $1 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 15920 i32.store end - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u - local.get $1 + local.get $9 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner31 - local.get $2 + br_if $folding-inner30 + local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 2 f32.ne - br_if $folding-inner32 - local.get $2 + br_if $folding-inner31 + local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 3 f32.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15952 i32.store offset=8 - local.get $2 + local.get $1 i32.load offset=4 - local.get $2 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u i32.const 15952 call $~lib/util/sort/SORT - local.get $2 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 3 f32.ne - br_if $folding-inner34 - local.get $2 + br_if $folding-inner33 + local.get $1 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 2 f32.ne - br_if $folding-inner35 - local.get $2 + br_if $folding-inner34 + local.get $1 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -63957,7 +62947,7 @@ global.get $~lib/memory/__stack_pointer i32.const 16628 i32.lt_s - br_if $folding-inner23 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -63994,19 +62984,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner31 + br_if $folding-inner30 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne - br_if $folding-inner32 + br_if $folding-inner31 local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne - br_if $folding-inner33 + br_if $folding-inner32 global.get $~lib/memory/__stack_pointer i32.const 15984 i32.store offset=8 @@ -64023,19 +63013,19 @@ call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne - br_if $folding-inner34 + br_if $folding-inner33 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne - br_if $folding-inner35 + br_if $folding-inner34 local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne - br_if $folding-inner36 + br_if $folding-inner35 global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -64046,12 +63036,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|091 + loop $while-continue|0145176 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|091 + br $while-continue|0145176 end end end @@ -64081,213 +63071,213 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 0 - i32.const 1568 - i32.const 323 - i32.const 3 + i32.const 33040 + i32.const 33088 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 344 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 345 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 346 + i32.const 345 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 367 + i32.const 346 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 438 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 440 + i32.const 388 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 461 + i32.const 389 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 463 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 484 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 486 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 507 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 509 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 541 + i32.const 484 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 675 - i32.const 5 + i32.const 486 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 676 - i32.const 5 + i32.const 507 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 672 - i32.const 5 + i32.const 509 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 673 - i32.const 5 + i32.const 541 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1909 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 388 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 389 + i32.const 576 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 390 + i32.const 577 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 33040 - i32.const 33088 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 578 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 570 + i32.const 675 i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 575 - i32.const 3 + i32.const 676 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 576 - i32.const 3 + i32.const 672 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 577 - i32.const 3 + i32.const 673 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 578 - i32.const 3 + i32.const 730 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 730 - i32.const 5 + i32.const 1056 + i32.const 1632 + i32.const 1875 + i32.const 9 call $~lib/builtins/abort unreachable end - i32.const 1056 + i32.const 1360 i32.const 1632 - i32.const 1875 - i32.const 9 + i32.const 1909 + i32.const 47 call $~lib/builtins/abort unreachable end @@ -64367,9 +63357,6 @@ i32.store local.get $0 i32.const 0 - call $~lib/rt/itcms/__link - local.get $0 - i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -64391,26 +63378,29 @@ local.get $1 local.get $2 i32.shl - local.tee $2 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $1 - i32.const 0 local.get $2 + i32.const 0 + local.get $1 call $~lib/memory/memory.fill local.get $0 - local.get $1 + local.get $2 i32.store + local.get $2 + if + local.get $0 + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $0 - local.get $1 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -64878,87 +63868,89 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store local.get $0 - local.tee $3 i32.load offset=8 i32.const 2 i32.shr_u - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $3 i32.load local.tee $5 i32.store - local.get $0 local.get $5 - call $~lib/rt/itcms/__link + if + local.get $4 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 local.get $0 - local.get $3 i32.load offset=4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $0 i32.const 2 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $4 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $2 - local.get $1 + local.tee $1 + local.get $0 + local.get $0 local.get $1 - local.get $2 i32.lt_s select - local.get $1 + local.get $0 i32.sub i32.const 2 i32.shl @@ -64967,7 +63959,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -64989,87 +63981,89 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store local.get $0 - local.tee $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $3 i32.load local.tee $5 i32.store - local.get $0 local.get $5 - call $~lib/rt/itcms/__link + if + local.get $4 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 local.get $0 - local.get $3 i32.load offset=4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 + local.tee $0 i32.const 3 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $4 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $2 - local.get $1 + local.tee $1 + local.get $0 + local.get $0 local.get $1 - local.get $2 i32.lt_s select - local.get $1 + local.get $0 i32.sub i32.const 3 i32.shl @@ -65078,7 +64072,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Float64Array#sort@varargs (param $0 i32) (result i32) (local $1 i32) @@ -65131,7 +64125,6 @@ (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -65148,51 +64141,54 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store + local.get $4 local.get $0 local.get $1 i32.shl local.tee $4 - local.set $6 + local.set $1 local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.set $1 + local.set $5 local.get $3 if - local.get $1 + local.get $5 local.get $3 - local.get $6 + local.get $1 call $~lib/memory/memory.copy end local.get $5 - local.get $1 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new - local.tee $2 - local.get $1 + local.tee $1 + local.get $5 i32.store - local.get $2 - local.get $1 - call $~lib/rt/itcms/__link - local.get $2 + local.get $5 + if + local.get $1 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $1 + local.get $5 i32.store offset=4 - local.get $2 + local.get $1 local.get $4 i32.store offset=8 - local.get $2 + local.get $1 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -65214,90 +64210,92 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $4 i32.const 0 i32.store local.get $0 - local.tee $3 i32.load offset=8 - local.set $4 - local.get $5 + local.set $3 + local.get $4 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $4 i32.store + local.get $4 local.get $0 - local.get $3 i32.load local.tee $5 i32.store - local.get $0 local.get $5 - call $~lib/rt/itcms/__link + if + local.get $4 + local.get $5 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $4 local.get $0 + i32.load offset=4 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 - local.get $3 - i32.load offset=4 + local.tee $0 i32.add i32.store offset=4 - local.get $0 + local.get $4 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $3 i32.add - local.tee $2 + local.tee $1 i32.const 0 - local.get $2 + local.get $1 i32.const 0 i32.gt_s select else local.get $2 - local.get $4 + local.get $3 local.get $2 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $2 - local.get $1 + local.tee $1 + local.get $0 + local.get $0 local.get $1 - local.get $2 i32.lt_s select - local.get $1 + local.get $0 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -65376,11 +64374,11 @@ i32.const 0 i32.gt_s select - local.tee $3 - call $~lib/typedarray/Int32Array#constructor local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.load offset=4 @@ -65388,7 +64386,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -65396,7 +64394,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 ) (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65422,42 +64420,44 @@ i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 - local.set $4 + local.set $2 local.get $3 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load - local.tee $3 + local.tee $4 i32.store - local.get $0 + local.get $4 + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - call $~lib/rt/itcms/__link local.get $0 + i32.load offset=4 i32.const 4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 4 i32.gt_s select - local.tee $3 - local.get $2 - i32.load offset=4 + local.tee $0 i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65467,26 +64467,26 @@ select else local.get $1 - local.get $4 + local.get $2 local.get $1 - local.get $4 + local.get $2 i32.lt_s select end local.tee $1 - local.get $3 + local.get $0 + local.get $0 local.get $1 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65512,42 +64512,44 @@ i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 - local.set $4 + local.set $2 local.get $3 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load - local.tee $3 + local.tee $4 i32.store - local.get $0 + local.get $4 + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $3 - call $~lib/rt/itcms/__link local.get $0 + i32.load offset=4 i32.const 4 - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.const 4 i32.gt_s select - local.tee $3 - local.get $2 - i32.load offset=4 + local.tee $0 i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $4 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65557,26 +64559,26 @@ select else local.get $1 - local.get $4 + local.get $2 local.get $1 - local.get $4 + local.get $2 i32.lt_s select end local.tee $1 - local.get $3 + local.get $0 + local.get $0 local.get $1 - local.get $3 - i32.gt_s + i32.lt_s select - local.get $3 + local.get $0 i32.sub i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65598,50 +64600,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 1 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65651,19 +64655,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 1 i32.shl @@ -65672,7 +64676,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65694,50 +64698,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 1 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 1 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65747,19 +64753,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 1 i32.shl @@ -65768,7 +64774,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65790,50 +64796,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 2 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65843,19 +64851,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 2 i32.shl @@ -65864,7 +64872,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65886,50 +64894,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 3 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -65939,19 +64949,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 3 i32.shl @@ -65960,7 +64970,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -65982,50 +64992,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 3 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -66035,19 +65047,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 3 i32.shl @@ -66056,7 +65068,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66078,50 +65090,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 0 i32.store local.get $0 - local.tee $2 i32.load offset=8 i32.const 2 i32.shr_u - local.set $3 - local.get $4 + local.set $2 + local.get $3 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $3 i32.store + local.get $3 local.get $0 - local.get $2 i32.load local.tee $4 i32.store - local.get $0 local.get $4 - call $~lib/rt/itcms/__link + if + local.get $3 + local.get $4 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end + local.get $3 local.get $0 - local.get $2 i32.load offset=4 i32.const 4 - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.const 4 i32.gt_u select - local.tee $2 + local.tee $0 i32.const 2 i32.shl i32.add i32.store offset=4 - local.get $0 + local.get $3 local.get $1 i32.const 0 i32.lt_s if (result i32) local.get $1 - local.get $3 + local.get $2 i32.add local.tee $1 i32.const 0 @@ -66131,19 +65145,19 @@ select else local.get $1 - local.get $3 + local.get $2 local.get $1 - local.get $3 + local.get $2 i32.lt_s select end local.tee $1 - local.get $2 + local.get $0 + local.get $0 local.get $1 - local.get $2 - i32.gt_s + i32.lt_s select - local.get $2 + local.get $0 i32.sub i32.const 2 i32.shl @@ -66152,7 +65166,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) @@ -66194,71 +65208,71 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -66266,7 +65280,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 ) (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -66299,6 +65313,8 @@ i32.shr_u local.tee $2 local.get $2 + i32.const 0 + i32.gt_u select local.tee $3 local.get $1 @@ -66329,10 +65345,10 @@ select i32.const 1 i32.shl - local.tee $3 + local.tee $1 local.get $4 i32.sub - local.tee $1 + local.tee $3 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -66346,7 +65362,7 @@ local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $1 i32.eq local.get $4 select @@ -66359,22 +65375,22 @@ return end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 local.get $0 local.get $4 i32.add - local.get $1 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) @@ -66409,68 +65425,67 @@ end global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $1 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $1 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $1 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $1 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $1 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.tee $0 + local.tee $2 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 local.get $1 local.get $0 + local.get $2 call $~lib/util/number/utoa32_dec_lut global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) @@ -66679,21 +65694,89 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $0 local.get $1 i32.add - local.get $3 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $0 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end ) ) diff --git a/tests/compiler/std/uri.optimized.wat b/tests/compiler/std/uri.optimized.wat index 1cba4a4eec..c77e1bd517 100644 --- a/tests/compiler/std/uri.optimized.wat +++ b/tests/compiler/std/uri.optimized.wat @@ -2,9 +2,9 @@ (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -156,11 +156,11 @@ (local $0 i32) (local $1 i32) i32.const 1376 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1184 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1584 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -199,160 +199,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 20748 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1248 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 4336 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1376 - i32.const 1440 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 4340 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -389,11 +235,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -405,28 +250,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -438,19 +280,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -475,9 +317,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -485,17 +327,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -623,7 +465,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -634,7 +476,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -654,44 +496,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -701,7 +542,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -711,20 +552,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -752,7 +593,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -779,15 +620,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -799,15 +637,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -828,6 +666,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -837,7 +678,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -874,8 +715,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1034,7 +875,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1159,7 +1004,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1169,7 +1014,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1182,14 +1027,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1214,56 +1058,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl local.get $1 - i32.const 31 + i32.add + i32.const 1 + i32.sub local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1364,12 +1205,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1385,14 +1226,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1403,18 +1244,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1425,54 +1265,50 @@ call $~lib/builtins/abort unreachable end + i32.const 12 + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.get $3 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1480,16 +1316,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1497,15 +1333,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1533,12 +1369,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1552,7 +1388,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1562,7 +1398,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1580,12 +1416,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1615,8 +1451,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1645,19 +1481,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1666,18 +1502,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1686,10 +1522,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1698,97 +1534,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1820,7 +1656,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1835,17 +1671,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1991,19 +1827,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2018,7 +1854,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2029,10 +1865,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2040,10 +1876,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2054,7 +1890,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2084,17 +1920,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2109,7 +1945,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2120,10 +1956,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2131,10 +1967,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2145,7 +1981,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2171,17 +2007,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2196,7 +2032,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2207,10 +2043,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2218,10 +2054,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2232,7 +2068,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2269,131 +2105,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2410,59 +2224,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2479,7 +2287,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2490,11 +2298,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2508,17 +2316,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2729,7 +2537,7 @@ local.get $0 i32.const 20 i32.sub - local.tee $2 + local.tee $3 i32.load i32.const -4 i32.and @@ -2738,28 +2546,28 @@ local.get $1 i32.ge_u if - local.get $2 + local.get $3 local.get $1 i32.store offset=16 local.get $0 return end local.get $1 - local.get $2 + local.get $3 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 local.get $0 local.get $1 - local.get $2 + local.get $3 i32.load offset=16 - local.tee $2 + local.tee $0 + local.get $0 local.get $1 - local.get $2 - i32.lt_u + i32.gt_u select call $~lib/memory/memory.copy - local.get $3 + local.get $2 ) (func $~lib/util/uri/encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2778,33 +2586,33 @@ local.get $1 i32.const 1 i32.shl - local.tee $9 + local.tee $8 i32.const 1 call $~lib/rt/itcms/__new local.set $3 loop $while-continue|0 local.get $1 - local.get $7 + local.get $4 i32.gt_u if block $while-break|0 - local.get $7 + local.get $4 local.set $5 loop $do-loop|1 block $do-break|1 - local.get $7 + local.get $4 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u - local.tee $4 + local.tee $6 i32.const 33 i32.sub i32.const 94 i32.ge_u br_if $do-break|1 - local.get $4 + local.get $6 i32.const 33 i32.sub local.get $2 @@ -2812,71 +2620,70 @@ i32.load8_u br_if $do-break|1 local.get $1 - local.get $7 + local.get $4 i32.const 1 i32.add - local.tee $7 + local.tee $4 i32.gt_u br_if $do-loop|1 end end + local.get $4 local.get $5 - local.get $7 - i32.lt_u + i32.gt_u if - local.get $9 - local.get $6 + local.get $8 local.get $7 + local.get $4 local.get $5 i32.sub i32.const 1 i32.shl - local.tee $8 + local.tee $9 i32.add i32.lt_u if local.get $3 - local.get $6 - local.get $8 + local.get $7 + local.get $9 i32.add - local.tee $9 + local.tee $8 call $~lib/rt/itcms/__renew local.set $3 end local.get $3 - local.get $6 + local.get $7 i32.add local.get $5 i32.const 1 i32.shl local.get $0 i32.add - local.get $8 + local.get $9 call $~lib/memory/memory.copy - local.get $6 - local.get $8 + local.get $7 + local.get $9 i32.add - local.set $6 + local.set $7 local.get $1 - local.get $7 + local.get $4 i32.le_u br_if $while-break|0 end - local.get $9 + local.get $8 i32.const 6 i32.const 24 - local.get $4 + local.get $6 i32.const 55296 i32.ge_u if - local.get $4 + local.get $6 i32.const 57343 i32.le_u - i32.const 0 - local.get $4 + local.get $6 i32.const 56320 i32.ge_u - select + i32.and if i32.const 1584 i32.const 1632 @@ -2885,12 +2692,12 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const 56319 i32.le_u if (result i32) local.get $1 - local.get $7 + local.get $4 i32.le_u if i32.const 1584 @@ -2900,23 +2707,22 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - local.get $7 + local.get $4 i32.const 1 i32.add - local.tee $7 + local.tee $4 i32.const 1 i32.shl local.get $0 i32.add i32.load16_u local.tee $5 - i32.const 57343 - i32.gt_u - local.get $5 i32.const 56320 i32.lt_u - select + local.get $5 + i32.const 57343 + i32.gt_u + i32.or if i32.const 1584 i32.const 1632 @@ -2928,7 +2734,7 @@ local.get $5 i32.const 1023 i32.and - local.get $4 + local.get $6 i32.const 1023 i32.and i32.const 10 @@ -2937,45 +2743,44 @@ i32.const 65536 i32.add else - local.get $4 + local.get $6 end - local.set $4 + local.set $6 end - local.get $4 + local.get $6 i32.const 128 i32.lt_u select - local.get $6 - local.tee $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.lt_u if local.get $3 - local.get $6 + local.get $5 i32.const 1 i32.shl - local.get $6 + local.get $5 local.get $1 i32.const 1 i32.gt_u select - local.tee $9 + local.tee $8 call $~lib/rt/itcms/__renew local.set $3 end - local.get $4 + local.get $6 i32.const 128 i32.lt_u - if (result i32) + if local.get $3 - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 4 i32.shr_u i32.const 15 @@ -2983,7 +2788,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $4 + local.get $6 i32.const 15 i32.and i32.const 1676 @@ -2993,28 +2798,24 @@ i32.shl i32.or i32.store offset=2 - local.get $5 - i32.const 6 - i32.add else - local.get $3 - local.get $4 + local.get $6 i32.const 2048 i32.lt_u - if (result i32) + if local.get $3 - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 15 @@ -3022,7 +2823,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3032,28 +2833,25 @@ i32.shl i32.or i32.store offset=2 - local.get $5 - i32.const 6 - i32.add else local.get $3 - local.get $4 + local.get $6 i32.const 65536 i32.lt_u if local.get $3 - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 15 @@ -3061,7 +2859,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3073,18 +2871,18 @@ i32.store offset=2 else local.get $3 - local.get $5 + local.get $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 18 i32.shr_u i32.const 240 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 15 @@ -3092,7 +2890,7 @@ i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3103,29 +2901,29 @@ i32.or i32.store offset=2 local.get $3 - local.get $5 + local.get $7 i32.const 6 i32.add - local.tee $5 + local.tee $7 i32.add - local.tee $6 + local.tee $5 i32.const 37 i32.store16 + local.get $5 local.get $6 - local.get $4 i32.const 12 i32.shr_u i32.const 63 i32.and i32.const 128 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3136,29 +2934,29 @@ i32.or i32.store offset=2 end - local.get $5 + local.get $7 i32.const 6 i32.add - local.tee $6 + local.tee $7 i32.add local.tee $5 i32.const 37 i32.store16 local.get $5 - local.get $4 + local.get $6 i32.const 6 i32.shr_u i32.const 63 i32.and i32.const 128 i32.or - local.tee $8 + local.tee $5 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $8 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3168,28 +2966,29 @@ i32.shl i32.or i32.store offset=2 - local.get $6 - i32.const 6 - i32.add end - local.tee $6 + local.get $3 + local.get $7 + i32.const 6 + i32.add + local.tee $7 i32.add local.tee $5 i32.const 37 i32.store16 local.get $5 - local.get $4 + local.get $6 i32.const 63 i32.and i32.const 128 i32.or - local.tee $4 + local.tee $5 i32.const 4 i32.shr_u i32.const 1676 i32.add i32.load8_u - local.get $4 + local.get $5 i32.const 15 i32.and i32.const 1676 @@ -3199,25 +2998,25 @@ i32.shl i32.or i32.store offset=2 - local.get $6 - i32.const 6 - i32.add end - local.set $6 local.get $7 - i32.const 1 + i32.const 6 i32.add local.set $7 + local.get $4 + i32.const 1 + i32.add + local.set $4 br $while-continue|0 end end end - local.get $6 - local.get $9 + local.get $7 + local.get $8 i32.lt_u if (result i32) local.get $3 - local.get $6 + local.get $7 call $~lib/rt/itcms/__renew else local.get $3 @@ -3249,7 +3048,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -3263,32 +3062,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -3305,29 +3103,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -3421,7 +3219,6 @@ i32.le_u br_if $while-break|0 end - i32.const 1 local.get $5 i32.const 37 i32.ne @@ -3430,16 +3227,16 @@ i32.const 2 i32.add i32.le_u - select + i32.or if (result i32) i32.const 1 else + local.get $0 local.get $3 i32.const 1 i32.add i32.const 1 i32.shl - local.get $0 i32.add local.tee $4 i32.load16_u @@ -3448,24 +3245,19 @@ i32.load16_u offset=2 local.set $4 local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - local.get $5 i32.const 32 i32.or i32.const 97 i32.sub i32.const 6 i32.lt_u + local.get $5 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u i32.or if (result i32) - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u local.get $4 i32.const 32 i32.or @@ -3473,6 +3265,11 @@ i32.sub i32.const 6 i32.lt_u + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u i32.or else i32.const 0 @@ -3559,7 +3356,7 @@ i32.const 56 i32.lt_u select - local.tee $9 + local.tee $4 i32.const 17 i32.mul i32.const 2 @@ -3567,23 +3364,23 @@ i32.const 1 i32.sub i32.shl - local.set $10 + local.set $9 i32.const 128 - local.get $9 + local.get $4 i32.shr_u i32.const 1 i32.sub i32.const 0 - local.get $9 + local.get $4 select local.get $5 i32.and local.set $5 loop $while-continue|2 - local.get $9 + local.get $4 i32.const 1 i32.sub - local.tee $9 + local.tee $4 if block $while-break|2 local.get $1 @@ -3606,58 +3403,58 @@ if (result i32) i32.const 1 else + local.get $0 local.get $3 i32.const 1 i32.add i32.const 1 i32.shl - local.get $0 i32.add - local.tee $7 + local.tee $10 i32.load16_u - local.set $4 - local.get $7 - i32.load16_u offset=2 local.set $7 - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - local.get $4 + local.get $10 + i32.load16_u offset=2 + local.set $10 + local.get $7 i32.const 32 i32.or i32.const 97 i32.sub i32.const 6 i32.lt_u + local.get $7 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u i32.or if (result i32) - local.get $7 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - local.get $7 + local.get $10 i32.const 32 i32.or i32.const 97 i32.sub i32.const 6 i32.lt_u + local.get $10 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u i32.or else i32.const 0 end if (result i32) - local.get $7 + local.get $10 i32.const 32 i32.or i32.const 39 i32.rem_u i32.const 9 i32.sub - local.get $4 + local.get $7 i32.const 32 i32.or i32.const 39 @@ -3708,31 +3505,25 @@ end end end - i32.const 1 local.get $5 - i32.const 1114111 - i32.gt_u - i32.const 1 - local.get $10 + i32.const 57344 + i32.lt_u + local.get $5 + i32.const 55296 + i32.ge_u + i32.and + local.get $9 i32.const -1 i32.eq local.get $5 - local.get $10 + local.get $9 i32.lt_u - select - select - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 57344 - i32.lt_u - i32.const 0 - local.get $5 - i32.const 55296 - i32.ge_u - select - end + i32.or + local.get $5 + i32.const 1114111 + i32.gt_u + i32.or + i32.or if i32.const 1584 i32.const 1632 @@ -3831,7 +3622,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -5417,4 +5208,153 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 20748 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1248 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 4336 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1376 + i32.const 1440 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 4340 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.untouched.wat index a5eddee6b7..86fca127d2 100644 --- a/tests/compiler/std/uri.untouched.wat +++ b/tests/compiler/std/uri.untouched.wat @@ -4274,22 +4274,9 @@ i32.sub i32.const 10 i32.lt_u - local.get $4 - i32.const 32 - i32.or - i32.const 97 - i32.sub - i32.const 6 - i32.lt_u - i32.or if (result i32) - local.get $3 - local.set $4 - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u + i32.const 1 + else local.get $4 i32.const 32 i32.or @@ -4297,7 +4284,26 @@ i32.sub i32.const 6 i32.lt_u - i32.or + end + if (result i32) + local.get $3 + local.set $4 + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 32 + i32.or + i32.const 97 + i32.sub + i32.const 6 + i32.lt_u + end else i32.const 0 end diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index 54c425d215..cb404d4a83 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -42,18 +42,18 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end global.get $super-inline/bar local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1248 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1056 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -92,160 +92,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17868 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1440 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1248 - i32.const 1312 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1444 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -282,11 +128,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -298,28 +143,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -331,19 +173,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -368,9 +210,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -378,17 +220,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -516,7 +358,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -527,7 +369,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -547,44 +389,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -594,7 +435,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -604,20 +445,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -645,7 +486,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -672,15 +513,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -692,15 +530,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -721,6 +559,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -730,7 +571,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -767,8 +608,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -927,7 +768,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1052,7 +897,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1062,7 +907,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1075,14 +920,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1112,9 +956,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1130,13 +974,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1146,9 +990,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1218,17 +1062,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $3 + local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if memory.size - local.tee $2 + local.tee $1 i32.const 4 - local.get $3 - i32.load offset=1568 local.get $2 + i32.load offset=1568 + local.get $1 i32.const 16 i32.shl i32.const 4 @@ -1241,16 +1085,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 + local.tee $3 local.get $1 - local.get $2 - i32.lt_s + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1258,15 +1102,15 @@ unreachable end end - local.get $3 local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 + local.get $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz @@ -1293,12 +1137,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 call $~lib/rt/tlsf/removeBlock local.get $1 i32.load - local.tee $2 + local.tee $3 i32.const -4 i32.and i32.const 28 @@ -1308,7 +1152,7 @@ i32.ge_u if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.and i32.const 28 @@ -1317,19 +1161,19 @@ local.get $1 i32.const 32 i32.add - local.tee $2 + local.tee $3 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $2 + local.get $3 i32.const -2 i32.and i32.store @@ -1359,8 +1203,8 @@ i32.load offset=8 local.set $2 local.get $1 - global.get $~lib/rt/itcms/white local.get $0 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $1 @@ -1412,7 +1256,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1424,11 +1268,11 @@ ) (func $~start (local $0 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer block $folding-inner0 + 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 1484 i32.lt_s @@ -1563,4 +1407,153 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17868 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1440 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index 44041fd406..0df9b0401a 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -1,8 +1,8 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $f64_=>_i32 (func (param f64) (result i32))) @@ -162,7 +162,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -176,32 +176,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -218,29 +217,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -256,13 +255,13 @@ (local $0 i32) (local $1 i32) i32.const 1408 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1216 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 2464 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 3520 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -329,7 +328,7 @@ i32.load offset=4 i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -352,7 +351,7 @@ end local.get $0 i32.load offset=8 - local.tee $1 + local.tee $2 i32.eqz if i32.const 0 @@ -362,15 +361,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 + local.get $2 i32.store offset=8 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.load offset=4 i32.const 3 i32.and - local.get $2 + local.get $1 i32.or i32.store offset=4 end @@ -435,30 +434,6 @@ local.get $0 i32.store offset=8 ) - (func $~lib/rt/itcms/__visit (param $0 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/itcms/Object#makeGray - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -495,11 +470,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -511,28 +485,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -544,19 +515,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -581,9 +552,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -591,17 +562,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -729,7 +700,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -740,7 +711,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -760,44 +731,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -807,7 +777,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -817,20 +787,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -858,7 +828,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -885,15 +855,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -905,15 +872,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -934,6 +901,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -943,7 +913,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -980,8 +950,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1140,7 +1110,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1265,7 +1239,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1275,7 +1249,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1288,14 +1262,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1320,56 +1293,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else + i32.const 31 + i32.const 1 + i32.const 27 local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub local.get $1 - i32.const 31 local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 i32.clz i32.sub - local.tee $2 + local.tee $3 + i32.const 7 + i32.sub + local.set $2 + local.get $1 + local.get $3 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - local.set $2 end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1470,12 +1440,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-loop|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1491,14 +1461,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1509,18 +1479,17 @@ global.set $~lib/rt/itcms/threshold end end - local.get $0 - i32.const 16 - i32.add - local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $6 - local.get $3 + local.tee $5 + local.get $0 + i32.const 16 + i32.add + local.tee $3 i32.const 1073741820 i32.gt_u if @@ -1531,54 +1500,50 @@ call $~lib/builtins/abort unreachable end - local.get $3 i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $3 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end + local.get $3 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $3 + i32.const 12 + i32.le_u + select local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $2 i32.eqz if memory.size - local.tee $5 - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $3 - i32.add - else - local.get $3 - end + local.tee $2 i32.const 4 - local.get $6 - i32.load offset=1568 local.get $5 + i32.load offset=1568 + local.get $2 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $3 + i32.add + local.get $3 + local.get $3 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -1586,16 +1551,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $2 + local.tee $4 local.get $2 - local.get $5 - i32.lt_s + local.get $4 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $4 memory.grow i32.const 0 i32.lt_s @@ -1603,15 +1568,15 @@ unreachable end end - local.get $6 local.get $5 + local.get $2 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $2 @@ -1639,12 +1604,12 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $5 local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 i32.load - local.set $5 + local.set $6 local.get $3 i32.const 4 i32.add @@ -1658,7 +1623,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const -4 i32.and local.get $3 @@ -1668,7 +1633,7 @@ i32.ge_u if local.get $2 - local.get $5 + local.get $6 i32.const 2 i32.and local.get $3 @@ -1686,12 +1651,12 @@ i32.const 1 i32.or i32.store - local.get $6 + local.get $5 local.get $3 call $~lib/rt/tlsf/insertBlock else local.get $2 - local.get $5 + local.get $6 i32.const -2 i32.and i32.store @@ -1721,8 +1686,8 @@ i32.load offset=8 local.set $3 local.get $2 - global.get $~lib/rt/itcms/white local.get $1 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 local.get $2 @@ -1751,19 +1716,19 @@ local.get $2 i32.const 20 i32.add - local.tee $3 - local.set $2 + local.tee $2 + local.set $1 block $~lib/util/memory/memset|inlined.0 local.get $0 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 local.get $0 - local.get $2 + local.get $1 i32.add - local.tee $1 + local.tee $3 i32.const 1 i32.sub i32.const 0 @@ -1772,18 +1737,18 @@ i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=1 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $3 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $3 i32.const 3 i32.sub i32.const 0 @@ -1792,10 +1757,10 @@ i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $3 i32.const 4 i32.sub i32.const 0 @@ -1804,97 +1769,97 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $2 + local.get $1 i32.const 0 - local.get $2 + local.get $1 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $3 i32.add - local.tee $4 + local.tee $1 i32.const 0 i32.store - local.get $4 - local.get $0 local.get $1 + local.get $0 + local.get $3 i32.sub i32.const -4 i32.and - local.tee $2 - i32.add local.tee $0 + i32.add + local.tee $3 i32.const 4 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.store offset=8 - local.get $0 + local.get $3 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 8 i32.sub i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $1 i32.const 0 i32.store offset=12 - local.get $4 + local.get $1 i32.const 0 i32.store offset=16 - local.get $4 + local.get $1 i32.const 0 i32.store offset=20 - local.get $4 + local.get $1 i32.const 0 i32.store offset=24 - local.get $0 + local.get $3 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 16 i32.sub i32.const 0 i32.store - local.get $4 - local.get $4 + local.get $1 + local.get $1 i32.const 4 i32.and i32.const 24 i32.add - local.tee $0 + local.tee $3 i32.add local.set $1 - local.get $2 local.get $0 + local.get $3 i32.sub local.set $0 loop $while-continue|0 @@ -1926,7 +1891,7 @@ end end end - local.get $3 + local.get $2 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1941,17 +1906,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2097,19 +2062,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2124,7 +2089,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -2135,10 +2100,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2146,10 +2111,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -2160,7 +2125,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -2190,17 +2155,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -2215,7 +2180,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -2226,10 +2191,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2237,10 +2202,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -2251,7 +2216,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -2277,17 +2242,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -2302,7 +2267,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -2313,10 +2278,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2324,10 +2289,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2338,7 +2303,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2375,131 +2340,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 + local.tee $1 + i32.load8_u + i32.store8 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 local.get $1 - local.get $3 + i32.const 2 + i32.add + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 - i32.const 2 - i32.add - local.set $1 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 - local.get $0 i32.load8_u offset=1 i32.store8 offset=1 - local.get $1 - local.get $3 - i32.load8_u - i32.store8 - local.get $1 - local.tee $4 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2516,59 +2459,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2585,7 +2522,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2596,11 +2533,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2614,17 +2551,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2829,64 +2766,20 @@ end end ) - (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 - i32.eqz - if - return - end + i32.const 2 + i32.shl local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1280 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/white - local.get $1 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq + i32.add + local.get $2 + i32.store + local.get $2 if local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $0 - local.get $1 - local.get $2 - select - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - end - end + local.get $2 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link end ) (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) @@ -2896,37 +2789,37 @@ (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5732 - i32.lt_s - if - i32.const 22144 - i32.const 22192 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $5 - i64.const 0 - i64.store - local.get $5 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray - local.get $3 + block $__inlined_func$~lib/util/string/joinStringArray (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 0 + i32.store offset=8 + local.get $4 i32.const 1 i32.sub local.tee $5 @@ -2938,19 +2831,18 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1184 - local.set $3 br $__inlined_func$~lib/util/string/joinStringArray end local.get $5 i32.eqz if global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 local.get $0 i32.load local.tee $0 i32.store - local.get $3 + local.get $1 i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -2958,16 +2850,15 @@ i32.const 1184 local.get $0 select - local.set $3 br $__inlined_func$~lib/util/string/joinStringArray end loop $for-loop|0 local.get $3 local.get $4 - i32.gt_s + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 2 i32.shl local.get $0 @@ -2983,93 +2874,93 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.get $2 + local.get $1 i32.add - local.set $2 + local.set $1 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.const 1180 i32.load i32.const 1 i32.shr_u - local.tee $6 + local.tee $1 + local.get $5 i32.mul - local.get $2 i32.add i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.store offset=8 i32.const 0 - local.set $4 + local.set $3 loop $for-loop|1 - local.get $4 + local.get $3 local.get $5 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.const 2 i32.shl local.get $0 i32.add i32.load - local.tee $2 + local.tee $6 i32.store offset=4 - local.get $2 + local.get $6 if - local.get $1 + local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add - local.get $2 - local.get $2 + local.get $6 + local.get $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $1 local.get $2 + local.get $6 i32.add - local.set $1 + local.set $2 end - local.get $6 + local.get $1 if - local.get $1 + local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add i32.const 1184 - local.get $6 + local.get $1 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $1 - local.get $6 + local.get $2 i32.add - local.set $1 + local.set $2 end - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|1 end end @@ -3084,10 +2975,10 @@ i32.store offset=4 local.get $0 if - local.get $1 + local.get $2 i32.const 1 i32.shl - local.get $3 + local.get $4 i32.add local.get $0 local.get $0 @@ -3104,8 +2995,8 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 end - local.get $3 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3215,25 +3106,25 @@ (local $1 i32) (local $2 i32) (local $3 i32) - 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 5732 - i32.lt_s - if - i32.const 22144 - i32.const 22192 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa32 + block $__inlined_func$~lib/util/number/itoa32 (result i32) + 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 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.eqz if @@ -3242,7 +3133,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 2032 - local.set $0 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer @@ -3253,71 +3143,71 @@ local.get $0 i32.const 31 i32.shr_u - local.tee $1 - select local.tee $2 + select local.tee $0 + local.tee $1 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $1 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $1 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $1 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $1 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $1 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $1 i32.const 100000000 i32.ge_u i32.add end end - local.get $1 + local.get $2 i32.add local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store + local.get $1 local.get $0 - local.get $2 local.get $3 call $~lib/util/number/utoa32_dec_lut - local.get $1 + local.get $2 if - local.get $0 + local.get $1 i32.const 45 i32.store16 end @@ -3325,8 +3215,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 end - local.get $0 ) (func $~lib/util/number/genDigits (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) (local $5 i32) @@ -3361,8 +3251,7 @@ i64.shr_u i32.wrap_i64 local.tee $2 - local.set $5 - local.get $2 + local.tee $5 i32.const 100000 i32.lt_u if (result i32) @@ -3585,22 +3474,20 @@ i32.shl i32.const 3918 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|3 + local.get $0 + local.get $9 + i64.lt_u local.get $1 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $9 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $9 local.get $0 i64.sub @@ -3614,7 +3501,7 @@ local.get $6 local.get $9 i64.lt_u - select + i32.or else i32.const 0 end @@ -3630,7 +3517,7 @@ br $while-continue|3 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 @@ -3710,22 +3597,20 @@ i32.shl i32.const 3918 i32.add - local.tee $8 + local.tee $2 i32.load16_u local.set $5 loop $while-continue|6 + local.get $0 + local.get $1 + i64.lt_u local.get $11 local.get $3 local.get $0 i64.sub i64.le_u - i32.const 0 - local.get $0 - local.get $1 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 local.get $1 local.get $0 i64.sub @@ -3739,7 +3624,7 @@ local.get $1 local.get $6 i64.gt_u - select + i32.or else i32.const 0 end @@ -3755,16 +3640,13 @@ br $while-continue|6 end end - local.get $8 + local.get $2 local.get $5 i32.store16 local.get $4 ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -3783,18 +3665,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -3811,27 +3692,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -3853,19 +3733,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -3882,7 +3761,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -3900,7 +3779,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -3911,24 +3790,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -3974,20 +3852,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -4010,20 +3885,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -4031,63 +3905,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -4104,22 +3975,21 @@ (local $1 i64) (local $2 i32) (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i32) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) (local $10 i64) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) - (local $15 i64) local.get $0 f64.const 0 f64.lt - local.tee $5 + local.tee $2 if (result f64) i32.const 3920 i32.const 45 @@ -4136,19 +4006,19 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.tee $2 + local.tee $6 i32.const 1 - local.get $2 + local.get $6 select i32.const 1075 i32.sub - local.tee $9 + local.tee $7 i32.const 1 i32.sub local.get $1 i64.const 4503599627370495 i64.and - local.get $2 + local.get $6 i32.const 0 i32.ne i64.extend_i32_u @@ -4163,11 +4033,11 @@ local.tee $3 i64.clz i32.wrap_i64 - local.tee $4 + local.tee $6 i32.sub - local.set $2 + local.set $8 local.get $3 - local.get $4 + local.get $6 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -4177,25 +4047,25 @@ i64.eq i32.const 1 i32.add - local.tee $4 + local.tee $6 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $9 - local.get $4 + local.get $7 + local.get $6 i32.sub - local.get $2 + local.get $8 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $2 + local.get $8 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $6 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -4204,9 +4074,9 @@ f64.add local.tee $0 i32.trunc_f64_s - local.tee $2 + local.tee $7 local.get $0 - local.get $2 + local.get $7 f64.convert_i32_s f64.ne i32.add @@ -4214,18 +4084,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $2 + local.tee $7 i32.const 3 i32.shl - local.tee $4 + local.tee $8 i32.sub global.set $~lib/util/number/_K - local.get $4 + local.get $8 i32.const 3976 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $2 + local.get $7 i32.const 1 i32.shl i32.const 4672 @@ -4243,77 +4113,77 @@ local.get $1 i64.const 32 i64.shr_u - local.tee $10 + local.tee $9 global.get $~lib/util/number/_frc_pow - local.tee $13 + local.tee $10 i64.const 4294967295 i64.and + local.tee $11 local.tee $1 - local.tee $6 i64.mul + local.get $1 local.get $3 - local.get $6 i64.mul i64.const 32 i64.shr_u i64.add - local.set $6 + local.set $4 global.get $~lib/util/number/_frc_plus - local.tee $7 + local.tee $1 i64.const 4294967295 i64.and - local.set $11 - local.get $7 + local.set $12 + local.get $1 i64.const 32 i64.shr_u - local.tee $14 - local.get $1 + local.tee $1 + local.get $11 i64.mul - local.get $1 local.get $11 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add - local.set $7 + local.set $5 global.get $~lib/util/number/_frc_minus - local.tee $8 + local.tee $13 i64.const 4294967295 i64.and - local.set $12 - local.get $8 + local.set $14 + local.get $13 i64.const 32 i64.shr_u - local.tee $15 - local.get $1 + local.tee $13 + local.get $11 i64.mul - local.get $1 - local.get $12 + local.get $11 + local.get $14 i64.mul i64.const 32 i64.shr_u i64.add - local.set $8 - local.get $5 + local.set $11 + local.get $2 i32.const 1 i32.shl i32.const 3920 i32.add + local.get $9 local.get $10 - local.get $13 i64.const 32 i64.shr_u - local.tee $1 + local.tee $9 local.tee $10 i64.mul - local.get $6 + local.get $4 i64.const 32 i64.shr_u i64.add local.get $3 local.get $10 i64.mul - local.get $6 + local.get $4 i64.const 4294967295 i64.and i64.add @@ -4323,16 +4193,16 @@ i64.shr_u i64.add local.get $1 - local.get $14 + local.get $9 i64.mul - local.get $7 + local.get $5 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $11 + local.get $9 + local.get $12 i64.mul - local.get $7 + local.get $5 i64.const 4294967295 i64.and i64.add @@ -4343,24 +4213,24 @@ i64.add i64.const 1 i64.sub - local.tee $3 + local.tee $1 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $6 i32.add i32.const -64 i32.sub - local.get $3 local.get $1 - local.get $15 + local.get $9 + local.get $13 i64.mul - local.get $8 + local.get $11 i64.const 32 i64.shr_u i64.add - local.get $1 - local.get $12 + local.get $9 + local.get $14 i64.mul - local.get $8 + local.get $11 i64.const 4294967295 i64.and i64.add @@ -4372,37 +4242,37 @@ i64.const 1 i64.add i64.sub - local.get $5 + local.get $2 call $~lib/util/number/genDigits - local.get $5 + local.get $2 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $5 + local.get $2 i32.add ) (func $~lib/number/F64#toString (param $0 f64) (result i32) (local $1 i32) (local $2 i32) - 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 5732 - i32.lt_s - if - i32.const 22144 - i32.const 22192 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/dtoa + block $__inlined_func$~lib/util/number/dtoa (result i32) + 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 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 f64.const 0 f64.eq @@ -4412,7 +4282,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3776 - local.set $1 br $__inlined_func$~lib/util/number/dtoa end local.get $0 @@ -4430,7 +4299,6 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 3808 - local.set $1 br $__inlined_func$~lib/util/number/dtoa end global.get $~lib/memory/__stack_pointer @@ -4443,77 +4311,76 @@ f64.const 0 f64.lt select - local.set $1 br $__inlined_func$~lib/util/number/dtoa end local.get $0 call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.const 1 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store - local.get $1 - i32.const 3920 local.get $2 + i32.const 3920 + local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $2 end - local.get $1 ) (func $start:templateliteral (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - memory.size - i32.const 16 - i32.shl - i32.const 22116 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1332 - i32.const 1328 - i32.store - i32.const 1336 - i32.const 1328 - i32.store - i32.const 1328 - global.set $~lib/rt/itcms/pinSpace - i32.const 1364 - i32.const 1360 - i32.store - i32.const 1368 - i32.const 1360 - i32.store - i32.const 1360 - global.set $~lib/rt/itcms/toSpace - i32.const 1508 - i32.const 1504 - i32.store - i32.const 1512 - i32.const 1504 - i32.store - i32.const 1504 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 + block $folding-inner0 + memory.size + i32.const 16 + i32.shl + i32.const 22116 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1332 + i32.const 1328 + i32.store + i32.const 1336 + i32.const 1328 + i32.store + i32.const 1328 + global.set $~lib/rt/itcms/pinSpace + i32.const 1364 + i32.const 1360 + i32.store + i32.const 1368 + i32.const 1360 + i32.store + i32.const 1360 + global.set $~lib/rt/itcms/toSpace + i32.const 1508 + i32.const 1504 + i32.store + i32.const 1512 + i32.const 1504 + i32.store + i32.const 1504 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4571,28 +4438,21 @@ global.get $~lib/memory/__stack_pointer i32.const 1744 i32.store offset=16 - i32.const 1748 - i32.const 1056 - i32.store i32.const 1744 - i32.const 1056 i32.const 1 - call $~lib/rt/itcms/__link + i32.const 1056 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 1744 i32.store offset=16 - i32.const 1756 - i32.const 1088 - i32.store i32.const 1744 + i32.const 3 i32.const 1088 - i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 1744 i32.store offset=16 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=20 i32.const 1744 @@ -4627,7 +4487,7 @@ global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4706,28 +4566,21 @@ global.get $~lib/memory/__stack_pointer i32.const 3680 i32.store offset=8 - i32.const 3684 - local.get $0 - i32.store i32.const 3680 - local.get $0 i32.const 1 - call $~lib/rt/itcms/__link + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 3680 i32.store offset=8 - i32.const 3692 - local.get $1 - i32.store i32.const 3680 + i32.const 3 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 3680 i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=12 i32.const 3680 @@ -4762,7 +4615,7 @@ global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4841,28 +4694,21 @@ global.get $~lib/memory/__stack_pointer i32.const 4976 i32.store offset=8 - i32.const 4980 - local.get $0 - i32.store i32.const 4976 - local.get $0 i32.const 1 - call $~lib/rt/itcms/__link + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 4976 i32.store offset=8 - i32.const 4988 - local.get $1 - i32.store i32.const 4976 + i32.const 3 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 4976 i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=12 i32.const 4976 @@ -4890,14 +4736,15 @@ i32.const 24 i32.add global.set $~lib/memory/__stack_pointer + call $templateliteral/test_fast_paths_string global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -4906,233 +4753,31 @@ i64.const 0 i64.store offset=8 local.get $0 - i32.const 0 - i32.store offset=16 + i64.const 0 + i64.store offset=16 local.get $0 - i32.const 1088 + i64.const 0 + i64.store offset=24 + local.get $0 + i32.const 1 + call $templateliteral/Ref#constructor + local.tee $2 i32.store - i32.const 2 - call $~lib/number/I32#toString - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5072 - i32.store offset=8 - local.get $0 - i32.const 5072 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 31 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=8 - i32.const 1088 - i32.const 1088 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5104 - i32.store offset=12 i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - i32.const 5104 - local.get $0 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5136 - i32.store offset=8 - local.get $0 - i32.const 5136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5104 - i32.store offset=12 - i32.const 5104 - i32.const 1088 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5168 - i32.store offset=8 - local.get $0 - i32.const 5168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 5200 - i32.store offset=16 - local.get $0 - i32.const 5200 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5232 - i32.store offset=8 - local.get $0 - i32.const 5232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5200 - i32.store offset=16 - i32.const 1088 - i32.const 5200 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5264 - i32.store offset=8 - local.get $0 - i32.const 5264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/number/I32#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - local.get $0 - i32.const 1088 - call $~lib/string/String#concat - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5296 - i32.store offset=8 - local.get $0 - i32.const 5296 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5732 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $0 - i32.const 1 call $templateliteral/Ref#constructor local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $templateliteral/Ref#constructor - local.tee $1 i32.store offset=4 - local.get $0 + local.get $2 call $templateliteral/Ref#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 5360 i32.store offset=12 - local.get $2 + local.get $1 i32.const 5360 call $~lib/string/String.__eq i32.eqz @@ -5144,29 +4789,29 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 call $templateliteral/Ref#toString - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 local.get $1 + i32.store offset=16 + local.get $0 call $templateliteral/Ref#toString local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=20 - local.get $2 + local.get $1 local.get $3 call $~lib/string/String#concat - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 5392 i32.store offset=12 - local.get $2 + local.get $1 i32.const 5392 call $~lib/string/String.__eq i32.eqz @@ -5179,40 +4824,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 call $templateliteral/Ref#toString - local.tee $0 + local.tee $1 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $templateliteral/Ref#toString - local.tee $1 + local.tee $0 i32.store offset=28 global.get $~lib/memory/__stack_pointer i32.const 5440 i32.store offset=16 - i32.const 5444 - local.get $0 - i32.store i32.const 5440 - local.get $0 i32.const 1 - call $~lib/rt/itcms/__link + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer i32.const 5440 i32.store offset=16 - i32.const 5452 - local.get $1 - i32.store i32.const 5440 - local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + i32.const 3 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset global.get $~lib/memory/__stack_pointer - local.tee $0 i32.const 5440 i32.store offset=16 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 1184 i32.store offset=20 i32.const 5440 @@ -5247,7 +4885,7 @@ global.get $~lib/memory/__stack_pointer i32.const 5732 i32.lt_s - br_if $folding-inner1 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -5312,100 +4950,311 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 22144 - i32.const 22192 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - (local $2 i32) - block $invalid - block $templateliteral/RecursiveObject - block $templateliteral/Ref - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - local.get $0 - local.tee $1 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - return - end - return - end - local.get $0 - local.tee $1 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - local.get $1 - i32.load offset=4 - local.tee $1 - if - local.get $1 - call $~lib/rt/itcms/__visit - end - return + i32.const 22144 + i32.const 22192 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $templateliteral/RecursiveObject + block $templateliteral/Ref + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray<~lib/string/String> $templateliteral/Ref $templateliteral/RecursiveObject $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.get $0 + i32.add + local.set $2 + loop $while-continue|0 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + return + end + return + end + local.get $0 + i32.load + local.tee $1 + if + local.get $1 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:templateliteral + ) + (func $templateliteral/test_fast_paths_string + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5732 + i32.lt_s + if + i32.const 22144 + i32.const 22192 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 1088 + i32.store + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5072 + i32.store offset=8 + local.get $0 + i32.const 5072 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 31 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=8 + i32.const 1088 + i32.const 1088 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=12 + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + i32.const 5104 + local.get $0 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=8 + local.get $0 + i32.const 5136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=12 + i32.const 5104 + i32.const 1088 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=8 + local.get $0 + i32.const 5168 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 5200 + i32.store offset=16 + local.get $0 + i32.const 5200 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5232 + i32.store offset=8 + local.get $0 + i32.const 5232 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.store offset=16 + i32.const 1088 + i32.const 5200 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=8 + local.get $0 + i32.const 5264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable end - unreachable - ) - (func $~start - global.get $~started + i32.const 2 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 1088 + call $~lib/string/String#concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5296 + i32.store offset=8 + local.get $0 + i32.const 5296 + call $~lib/string/String.__eq + i32.eqz if - return + i32.const 0 + i32.const 1120 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 1 - global.set $~started - call $start:templateliteral + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $templateliteral/Ref#toString (param $0 i32) (result i32) (local $1 i32) @@ -5477,9 +5326,9 @@ local.get $1 local.get $0 i32.load offset=4 - local.tee $1 + local.tee $2 i32.store - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -5491,13 +5340,13 @@ return end global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 local.get $0 i32.load local.tee $0 i32.store offset=4 - local.get $2 local.get $1 + local.get $2 call $templateliteral/RecursiveObject#toString local.tee $1 i32.store offset=8 @@ -5507,20 +5356,26 @@ i32.const 5620 local.get $0 i32.store - i32.const 5616 local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link + if + i32.const 5616 + local.get $0 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 5616 i32.store offset=12 i32.const 5628 local.get $1 i32.store - i32.const 5616 local.get $1 - i32.const 1 - call $~lib/rt/itcms/__link + if + i32.const 5616 + local.get $1 + i32.const 1 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 5616 @@ -5565,7 +5420,7 @@ i32.shr_u i32.const 1 i32.shl - local.tee $3 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -5574,9 +5429,9 @@ i32.shr_u i32.const 1 i32.shl - local.tee $4 + local.tee $3 i32.add - local.tee $2 + local.tee $4 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -5587,26 +5442,26 @@ return end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.store - local.get $2 + local.get $4 local.get $0 - local.get $3 + local.get $2 call $~lib/memory/memory.copy local.get $2 - local.get $3 + local.get $4 i32.add local.get $1 - local.get $4 + local.get $3 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $4 ) (func $templateliteral/Ref#constructor (param $0 i32) (result i32) (local $1 i32) @@ -5674,21 +5529,100 @@ local.get $2 local.get $0 i32.store - local.get $2 local.get $0 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $0 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end local.get $2 local.get $1 i32.store offset=4 - local.get $2 local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link + if + local.get $2 + local.get $1 + i32.const 0 + call $byn-split-outlined-A$~lib/rt/itcms/__link + end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) ) diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index 4d5708a9b9..fc72802671 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -49,7 +49,7 @@ (local $0 i32) (local $1 i32) i32.const 1488 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -88,163 +88,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - local.tee $1 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $3 - i32.eqz - if - i32.const 0 - local.get $1 - i32.const 18140 - i32.lt_u - local.get $1 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $1 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $3 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $3 - local.get $0 - local.tee $1 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $2 - local.tee $0 - i32.const 1728 - i32.load - i32.gt_u - if - i32.const 1488 - i32.const 1552 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1732 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $0 - local.get $3 - i32.load offset=8 - local.set $2 - local.get $1 - local.get $0 - local.get $3 - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - local.get $1 - i32.or - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -281,11 +124,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -297,28 +139,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -330,19 +169,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -367,9 +206,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -377,17 +216,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -515,7 +354,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -526,7 +365,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -546,44 +385,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -593,7 +431,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -603,20 +441,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -644,7 +482,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -735,7 +573,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -800,19 +642,19 @@ return end global.get $~lib/rt/itcms/iter - local.tee $0 + local.tee $1 global.get $~lib/rt/itcms/toSpace i32.ne if - local.get $0 + local.get $1 i32.load offset=4 - local.tee $1 + local.tee $3 i32.const -4 i32.and global.set $~lib/rt/itcms/iter global.get $~lib/rt/itcms/white i32.eqz - local.get $1 + local.get $3 i32.const 3 i32.and i32.ne @@ -824,19 +666,19 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 18140 i32.lt_u if - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 else global.get $~lib/rt/itcms/total - local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -844,7 +686,7 @@ i32.add i32.sub global.set $~lib/rt/itcms/total - local.get $0 + local.get $1 i32.const 4 i32.add local.tee $3 @@ -854,12 +696,10 @@ global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - local.set $0 memory.size local.tee $1 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $1 @@ -926,7 +766,7 @@ memory.size i32.const 16 i32.shl - local.tee $1 + local.tee $0 i32.const 19716 i32.lt_u if @@ -937,14 +777,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const -16 i32.and i32.const 19712 i32.load - local.tee $1 + local.tee $0 if (result i32) - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 19724 @@ -957,11 +797,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 19708 i32.eq if (result i32) - local.get $1 + local.get $0 i32.load local.set $2 i32.const 19708 @@ -1017,7 +857,7 @@ local.get $3 i32.const 4 i32.sub - local.set $0 + local.set $1 local.get $3 i32.const 15 i32.and @@ -1027,7 +867,7 @@ if (result i32) i32.const 1 else - local.get $0 + local.get $1 i32.load i32.const 1 i32.and @@ -1040,13 +880,13 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock end end @@ -1114,7 +954,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1123,146 +963,291 @@ (func $~start (local $0 i32) (local $1 i32) - block $__inlined_func$start:throw + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1056 + i32.store + local.get $1 + i32.const 1216 + i32.store offset=8 + local.get $1 i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1756 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1216 - i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1756 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 1056 + i32.store + loop $while-continue|0 local.get $0 - i32.const 12 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1756 + local.tee $0 + i32.const 10 i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 1056 - i32.store - loop $while-continue|0 + if + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 - i32.lt_s + i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - local.get $0 - i32.const 10 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store offset=8 - i32.const 1248 - i32.const 1168 - i32.const 23 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1296 + i32.const 1216 i32.store offset=8 - br $while-continue|0 + i32.const 1248 + i32.const 1168 + i32.const 23 + i32.const 7 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=8 + br $while-continue|0 end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1328 - i32.store offset=12 - local.get $0 - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1348 - i32.const 1344 - i32.store - i32.const 1352 - i32.const 1344 - i32.store - i32.const 1344 - global.set $~lib/rt/itcms/pinSpace - i32.const 1444 - i32.const 1440 - i32.store - i32.const 1448 - i32.const 1440 - i32.store - i32.const 1440 - global.set $~lib/rt/itcms/toSpace - i32.const 1588 - i32.const 1584 - i32.store - i32.const 1592 - i32.const 1584 - i32.store - i32.const 1584 - global.set $~lib/rt/itcms/fromSpace - memory.size - drop + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1328 + i32.store offset=12 + local.get $0 + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/pinSpace + i32.const 1444 + i32.const 1440 + i32.store + i32.const 1448 + i32.const 1440 + i32.store + i32.const 1440 + global.set $~lib/rt/itcms/toSpace + i32.const 1588 + i32.const 1584 + i32.store + i32.const 1592 + i32.const 1584 + 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 + if + loop $while-continue|07 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|07 + end + end + end + call $~lib/rt/itcms/step + loop $while-continue|1 global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s if - loop $while-continue|00 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - br $while-continue|00 - end - end + call $~lib/rt/itcms/step + br $while-continue|1 end - call $~lib/rt/itcms/step - loop $while-continue|1 - global.get $~lib/rt/itcms/state + end + return + end + i32.const 18160 + i32.const 18208 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18140 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz if - call $~lib/rt/itcms/step - br $while-continue|1 + i32.const 0 + i32.const 1392 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable end - br $__inlined_func$start:throw + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 end - i32.const 18160 - i32.const 18208 + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1728 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1488 + i32.const 1552 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1732 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/rt/itcms/visitCount end ) ) diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 5a3c286aea..1c629d6406 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -80,7 +80,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $3 local.get $1 i32.const 20 i32.sub @@ -94,32 +94,31 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.tee $3 + local.tee $2 i32.const 7 i32.and local.get $1 i32.const 7 i32.and i32.or - i32.const 1 - local.get $2 + i32.eqz + local.get $3 local.tee $0 i32.const 4 i32.ge_u - select - i32.eqz + i32.and if loop $do-loop|0 - local.get $3 + local.get $2 i64.load local.get $1 i64.load i64.eq if - local.get $3 + local.get $2 i32.const 8 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 8 i32.add @@ -136,29 +135,29 @@ end loop $while-continue|1 local.get $0 - local.tee $2 + local.tee $3 i32.const 1 i32.sub local.set $0 - local.get $2 + local.get $3 if - local.get $3 + local.get $2 i32.load16_u - local.tee $2 + local.tee $3 local.get $1 i32.load16_u local.tee $4 i32.ne if - local.get $2 + local.get $3 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $2 i32.const 2 i32.add - local.set $3 + local.set $2 local.get $1 i32.const 2 i32.add @@ -174,17 +173,17 @@ (local $0 i32) (local $1 i32) i32.const 1264 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $typeof/c local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end i32.const 1552 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1360 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -223,160 +222,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 18220 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1424 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1792 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1552 - i32.const 1616 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1796 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -413,11 +258,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -429,28 +273,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -462,19 +303,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -499,9 +340,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -509,17 +350,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -647,7 +488,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -658,7 +499,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -678,44 +519,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -725,7 +565,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -735,20 +575,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -776,7 +616,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -803,15 +643,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -823,15 +660,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -852,6 +689,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -861,7 +701,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -898,8 +738,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1058,7 +898,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1183,7 +1027,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1193,7 +1037,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1206,14 +1050,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1243,9 +1086,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1261,13 +1104,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1277,9 +1120,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1315,13 +1158,17 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end local.get $0 i32.load offset=4 - call $~lib/rt/itcms/__visit + local.tee $0 + if + local.get $0 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end return end return @@ -1738,7 +1585,7 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1747,12 +1594,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $1 + local.set $0 loop $do-loop|0 - local.get $1 + local.get $0 call $~lib/rt/itcms/step i32.sub - local.set $1 + local.set $0 global.get $~lib/rt/itcms/state i32.eqz if @@ -1768,14 +1615,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $1 + local.get $0 i32.const 0 i32.gt_s br_if $do-loop|0 end global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1794,15 +1641,15 @@ global.get $~lib/rt/tlsf/ROOT local.tee $3 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if memory.size - local.tee $2 + local.tee $0 i32.const 4 local.get $3 i32.load offset=1568 - local.get $2 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1815,16 +1662,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $1 - local.get $1 + local.tee $2 + local.get $0 local.get $2 - i32.lt_s + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $1 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1833,7 +1680,7 @@ end end local.get $3 - local.get $2 + local.get $0 i32.const 16 i32.shl memory.size @@ -1842,7 +1689,7 @@ call $~lib/rt/tlsf/addMemory local.get $3 call $~lib/rt/tlsf/searchBlock - local.tee $1 + local.tee $0 i32.eqz if i32.const 0 @@ -1853,7 +1700,7 @@ unreachable end end - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1868,49 +1715,49 @@ unreachable end local.get $3 - local.get $1 + local.get $0 call $~lib/rt/tlsf/removeBlock - local.get $1 + local.get $0 i32.load - local.tee $2 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $4 + local.tee $2 i32.const 16 i32.ge_u if - local.get $1 - local.get $2 + local.get $0 + local.get $4 i32.const 2 i32.and i32.const 28 i32.or i32.store - local.get $1 + local.get $0 i32.const 32 i32.add - local.tee $2 - local.get $4 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store local.get $3 - local.get $2 + local.get $4 call $~lib/rt/tlsf/insertBlock else - local.get $1 - local.get $2 + local.get $0 + local.get $4 i32.const -2 i32.and i32.store - local.get $1 + local.get $0 i32.const 4 i32.add - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1922,37 +1769,37 @@ i32.and i32.store end - local.get $1 + local.get $0 i32.const 4 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $2 i32.load offset=8 - local.set $4 - local.get $1 - global.get $~lib/rt/itcms/white + local.set $3 + local.get $0 local.get $2 + global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $1 - local.get $4 + local.get $0 + local.get $3 i32.store offset=8 - local.get $4 - local.get $4 + local.get $3 + local.get $3 i32.load offset=4 i32.const 3 i32.and - local.get $1 + local.get $0 i32.or i32.store offset=4 local.get $2 - local.get $1 + local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $1 + local.get $0 i32.load i32.const -4 i32.and @@ -1960,8 +1807,8 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $0 local.get $1 + local.get $0 i32.const 20 i32.add local.tee $0 @@ -2080,4 +1927,153 @@ call $~lib/builtins/abort unreachable ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 18220 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1792 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1552 + i32.const 1616 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) ) diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.optimized.wat index e2fda4418a..187f41a7a7 100644 --- a/tests/compiler/unary.optimized.wat +++ b/tests/compiler/unary.optimized.wat @@ -48,12 +48,9 @@ global.set $unary/i i32.const -1 global.set $unary/i - i32.const -1 - local.tee $0 - i32.const 1 - i32.sub + i32.const -2 global.set $unary/i - local.get $0 + i32.const -1 global.set $unary/i global.get $unary/I i64.const 1 @@ -93,12 +90,9 @@ global.set $unary/I i64.const -1 global.set $unary/I - i64.const -1 - local.tee $1 - i64.const 1 - i64.sub + i64.const -2 global.set $unary/I - local.get $1 + i64.const -1 global.set $unary/I global.get $unary/f f32.const 1 diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index c3bd25c45e..4c946afcb8 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -36,38 +36,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -80,96 +80,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $3 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -181,7 +179,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index c1d81ed05c..1dd4b8acc5 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -12,8 +12,8 @@ (export "_start" (func $~start)) (func $wasi/seed/test (result f64) (local $0 i64) - (local $1 i64) - (local $2 i32) + (local $1 i32) + (local $2 i64) global.get $~lib/math/random_seeded i32.eqz if @@ -24,17 +24,17 @@ drop i32.const 1024 i64.load - local.tee $1 + local.tee $0 i64.eqz br_if $do-loop|0 end i64.const -7046029254386353131 - local.get $1 - local.get $1 + local.get $0 + local.get $0 i64.eqz select - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i64.const 33 i64.shr_u i64.xor @@ -82,9 +82,9 @@ global.get $~lib/math/random_state0_64 local.set $0 global.get $~lib/math/random_state1_64 - local.tee $1 + local.tee $2 global.set $~lib/math/random_state0_64 - local.get $1 + local.get $2 local.get $0 i64.const 23 i64.shl @@ -96,12 +96,12 @@ i64.shr_u i64.xor i64.xor - local.get $1 + local.get $2 i64.const 26 i64.shr_u i64.xor global.set $~lib/math/random_state1_64 - local.get $1 + local.get $2 i64.const 12 i64.shr_u i64.const 4607182418800017408 diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index ae31d07581..a28ff852c7 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -57,38 +57,38 @@ i32.shl local.get $0 i32.add - local.set $4 + local.set $3 local.get $2 local.set $1 loop $while-continue|0 local.get $0 - local.get $4 + local.get $3 i32.lt_u if local.get $0 i32.load16_u - local.tee $3 + local.tee $4 i32.const 128 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.store8 local.get $1 i32.const 1 i32.add else - local.get $3 + local.get $4 i32.const 2048 i32.lt_u if (result i32) local.get $1 - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -101,96 +101,94 @@ i32.const 2 i32.add else + local.get $4 + i32.const 56320 + i32.lt_u local.get $3 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.and + local.get $4 i32.const 63488 i32.and i32.const 55296 i32.eq + i32.and if - local.get $4 local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and i32.const 56320 - i32.lt_u - select + i32.eq if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 + local.get $1 + local.get $4 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $3 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $4 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $4 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $4 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 end end local.get $1 - local.get $3 + local.get $4 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $3 + local.get $4 i32.const 6 i32.shr_u i32.const 63 @@ -202,7 +200,7 @@ i32.or i32.store16 local.get $1 - local.get $3 + local.get $4 i32.const 63 i32.and i32.const 128 @@ -253,13 +251,13 @@ else i32.const 19 end - local.tee $4 + local.tee $0 i32.const 544106784 i32.store - local.get $4 + local.get $0 i32.const 4 i32.add - local.set $4 + local.set $0 local.get $1 if local.get $1 @@ -268,18 +266,18 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 + local.set $4 i32.const 3 global.set $~argumentsLength local.get $1 - local.get $0 local.get $4 + local.get $0 call $~lib/string/String.UTF8.encodeUnsafe@varargs - local.get $4 + local.get $0 i32.add - local.set $4 + local.set $0 end - local.get $4 + local.get $0 i32.const 40 i32.store8 local.get $2 @@ -328,17 +326,17 @@ i32.add end end - local.tee $0 - local.get $4 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|0 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $2 i32.const 10 i32.rem_u @@ -352,9 +350,9 @@ br_if $do-loop|0 end local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $0 i32.const 58 i32.store8 local.get $3 @@ -403,17 +401,17 @@ i32.add end end - local.tee $0 - local.get $1 + local.tee $1 + local.get $0 i32.const 1 i32.add i32.add - local.set $4 + local.set $0 loop $do-loop|1 - local.get $4 + local.get $0 i32.const 1 i32.sub - local.tee $4 + local.tee $0 local.get $3 i32.const 10 i32.rem_u @@ -427,7 +425,7 @@ br_if $do-loop|1 end local.get $0 - local.get $4 + local.get $1 i32.add local.tee $0 i32.const 2601 @@ -482,11 +480,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -498,28 +495,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -531,19 +525,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -568,9 +562,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -578,17 +572,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -716,7 +710,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -727,7 +721,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -747,44 +741,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -794,7 +787,7 @@ call $~lib/wasi/index/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -804,20 +797,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -845,7 +838,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -872,15 +865,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -892,15 +882,15 @@ call $~lib/wasi/index/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -921,6 +911,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -930,7 +923,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -967,8 +960,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -1043,56 +1036,53 @@ ) (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $1 i32.const 256 i32.lt_u - if + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $1 else - local.get $1 - i32.const 536870910 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 i32.const 31 + i32.const 1 + i32.const 27 local.get $1 i32.clz i32.sub - local.tee $2 - i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 1 i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 + local.get $1 + local.get $1 + i32.const 536870910 + i32.lt_u + select + local.tee $1 + i32.clz + i32.sub + local.tee $3 i32.const 7 i32.sub local.set $2 + local.get $1 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor end - local.get $1 + local.tee $1 i32.const 16 i32.lt_u - i32.const 0 local.get $2 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -1175,76 +1165,75 @@ (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i64) (local $13 i64) local.get $2 local.get $1 i64.sub - local.set $10 + local.set $12 local.get $2 i64.const 1 i32.const 0 local.get $3 i32.sub - local.tee $11 + local.tee $10 i64.extend_i32_s local.tee $1 i64.shl - local.tee $12 + local.tee $13 i64.const 1 i64.sub - local.tee $13 + local.tee $11 i64.and local.set $7 local.get $2 local.get $1 i64.shr_u i32.wrap_i64 + local.tee $3 local.tee $6 - local.set $3 - local.get $6 i32.const 100000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 100 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $3 + local.get $6 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $3 + local.get $6 i32.const 1000 i32.ge_u i32.add end else - local.get $3 + local.get $6 i32.const 10000000 i32.lt_u if (result i32) - local.get $3 + local.get $6 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $3 + local.get $6 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $3 + local.get $6 i32.const 100000000 i32.ge_u i32.add @@ -1273,107 +1262,107 @@ i32.sub br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 end - local.get $6 + local.get $3 i32.const 1000000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 1000 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 1000 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 100 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 100 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 + local.get $3 i32.const 10 i32.div_u - local.set $3 - local.get $6 + local.set $6 + local.get $3 i32.const 10 i32.rem_u - local.set $6 + local.set $3 br $break|1 end - local.get $6 - local.set $3 - i32.const 0 + local.get $3 local.set $6 + i32.const 0 + local.set $3 br $break|1 end i32.const 0 - local.set $3 + local.set $6 end - local.get $3 local.get $5 + local.get $6 i32.or if local.get $5 @@ -1386,7 +1375,7 @@ i32.shl local.get $0 i32.add - local.get $3 + local.get $6 i32.const 65535 i32.and i32.const 48 @@ -1397,16 +1386,16 @@ i32.const 1 i32.sub local.set $9 + local.get $4 local.get $7 - local.get $6 + local.get $3 i64.extend_i32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl i64.add local.tee $1 - local.get $4 - i64.le_u + i64.ge_u if local.get $9 global.get $~lib/util/number/_K @@ -1418,7 +1407,7 @@ i32.const 2200 i32.add i64.load32_u - local.get $11 + local.get $10 i64.extend_i32_s i64.shl local.set $2 @@ -1429,44 +1418,42 @@ i32.shl local.get $0 i32.add - local.tee $6 + local.tee $0 i32.load16_u - local.set $3 + local.set $6 loop $while-continue|3 + local.get $1 + local.get $12 + i64.lt_u local.get $2 local.get $4 local.get $1 i64.sub i64.le_u - i32.const 0 - local.get $1 - local.get $10 - i64.lt_u - select + i32.and if (result i32) - i32.const 1 - local.get $10 + local.get $12 local.get $1 i64.sub local.get $1 local.get $2 i64.add local.tee $7 - local.get $10 + local.get $12 i64.sub i64.gt_u local.get $7 - local.get $10 + local.get $12 i64.lt_u - select + i32.or else i32.const 0 end if - local.get $3 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 local.get $1 local.get $2 i64.add @@ -1474,8 +1461,8 @@ br $while-continue|3 end end + local.get $0 local.get $6 - local.get $3 i32.store16 local.get $5 return @@ -1483,7 +1470,7 @@ br $while-continue|0 end end - loop $while-continue|4 + loop $while-continue|4 (result i32) local.get $4 i64.const 10 i64.mul @@ -1492,7 +1479,7 @@ i64.const 10 i64.mul local.tee $1 - local.get $11 + local.get $10 i64.extend_i32_s i64.shr_u local.tee $2 @@ -1524,87 +1511,85 @@ i32.const 1 i32.sub local.set $9 - local.get $4 local.get $1 - local.get $13 + local.get $11 i64.and local.tee $7 - i64.le_u - br_if $while-continue|4 - end - local.get $9 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - local.set $1 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 2200 - i32.add - i64.load32_u - local.get $10 - i64.mul - local.set $2 - local.get $5 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $6 - i32.load16_u - local.set $3 - loop $while-continue|6 - local.get $12 local.get $4 - local.get $1 - i64.sub - i64.le_u + i64.ge_u + br_if $while-continue|4 + local.get $9 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $7 + local.set $1 i32.const 0 - local.get $1 - local.get $2 - i64.lt_u - select - if (result i32) - i32.const 1 - local.get $2 - local.get $1 - i64.sub + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 2200 + i32.add + i64.load32_u + local.get $12 + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $6 + loop $while-continue|6 local.get $1 - local.get $12 - i64.add - local.tee $7 local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $7 - i64.gt_u - select - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.sub - local.set $3 + i64.lt_u + local.get $13 + local.get $4 local.get $1 - local.get $12 - i64.add - local.set $1 - br $while-continue|6 + i64.sub + i64.le_u + i32.and + if (result i32) + local.get $2 + local.get $1 + i64.sub + local.get $1 + local.get $13 + i64.add + local.tee $7 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $7 + i64.gt_u + i32.or + else + i32.const 0 + end + if + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $1 + local.get $13 + i64.add + local.set $1 + br $while-continue|6 + end end + local.get $0 + local.get $6 + i32.store16 + local.get $5 end - local.get $6 - local.get $3 - i32.store16 - local.get $5 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1619,17 +1604,17 @@ select if local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1775,19 +1760,19 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1802,7 +1787,7 @@ local.get $0 local.get $1 i32.load offset=1 - local.tee $4 + local.tee $3 i32.const 8 i32.shl local.get $5 @@ -1813,10 +1798,10 @@ local.get $0 local.get $1 i32.load offset=5 - local.tee $3 + local.tee $4 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1824,10 +1809,10 @@ local.get $0 local.get $1 i32.load offset=9 - local.tee $4 + local.tee $3 i32.const 8 i32.shl - local.get $3 + local.get $4 i32.const 24 i32.shr_u i32.or @@ -1838,7 +1823,7 @@ local.tee $5 i32.const 8 i32.shl - local.get $4 + local.get $3 i32.const 24 i32.shr_u i32.or @@ -1868,17 +1853,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 local.get $2 @@ -1893,7 +1878,7 @@ local.get $0 local.get $1 i32.load offset=2 - local.tee $4 + local.tee $3 i32.const 16 i32.shl local.get $5 @@ -1904,10 +1889,10 @@ local.get $0 local.get $1 i32.load offset=6 - local.tee $3 + local.tee $4 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1915,10 +1900,10 @@ local.get $0 local.get $1 i32.load offset=10 - local.tee $4 + local.tee $3 i32.const 16 i32.shl - local.get $3 + local.get $4 i32.const 16 i32.shr_u i32.or @@ -1929,7 +1914,7 @@ local.tee $5 i32.const 16 i32.shl - local.get $4 + local.get $3 i32.const 16 i32.shr_u i32.or @@ -1955,17 +1940,17 @@ i32.load local.set $5 local.get $0 - local.tee $4 + local.tee $3 i32.const 1 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 1 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u i32.store8 local.get $2 @@ -1980,7 +1965,7 @@ local.get $0 local.get $1 i32.load offset=3 - local.tee $4 + local.tee $3 i32.const 24 i32.shl local.get $5 @@ -1991,10 +1976,10 @@ local.get $0 local.get $1 i32.load offset=7 - local.tee $3 + local.tee $4 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2002,10 +1987,10 @@ local.get $0 local.get $1 i32.load offset=11 - local.tee $4 + local.tee $3 i32.const 24 i32.shl - local.get $3 + local.get $4 i32.const 8 i32.shr_u i32.or @@ -2016,7 +2001,7 @@ local.tee $5 i32.const 24 i32.shl - local.get $4 + local.get $3 i32.const 8 i32.shr_u i32.or @@ -2053,131 +2038,109 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $1 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 8 @@ -2194,59 +2157,53 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add - local.tee $3 + local.tee $1 i32.load8_u i32.store8 - local.get $3 - local.tee $0 - i32.const 2 - i32.add - local.set $3 - local.get $4 local.get $0 + local.get $1 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + local.get $1 i32.const 2 i32.add local.tee $1 - local.get $3 i32.load8_u i32.store8 + local.get $0 local.get $1 - local.tee $4 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $0 i32.const 2 i32.add - local.set $1 - local.get $3 local.tee $0 + local.get $1 i32.const 2 i32.add - local.set $3 - local.get $4 - local.get $0 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $1 - local.get $3 + local.tee $3 i32.load8_u i32.store8 - local.get $1 + local.get $3 i32.const 2 i32.add - local.set $0 - local.get $1 + local.set $1 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 2 i32.add - local.set $1 + local.set $0 end local.get $2 i32.const 4 @@ -2263,7 +2220,7 @@ local.get $0 i32.const 2 i32.add - local.tee $4 + local.tee $0 local.get $1 i32.const 2 i32.add @@ -2274,11 +2231,11 @@ i32.const 2 i32.add local.set $1 - local.get $4 + local.get $0 local.get $3 i32.load8_u offset=1 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 2 i32.add local.set $0 @@ -2292,17 +2249,17 @@ i32.load8_u i32.store8 local.get $0 - local.tee $4 + local.tee $3 i32.const 2 i32.add local.set $0 local.get $1 - local.tee $3 + local.tee $4 i32.const 2 i32.add local.set $1 - local.get $4 local.get $3 + local.get $4 i32.load8_u offset=1 i32.store8 offset=1 end @@ -2613,9 +2570,6 @@ ) (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $2 i32.eqz if @@ -2634,18 +2588,17 @@ local.get $1 local.get $2 i32.add - local.tee $4 + local.tee $3 i32.const 21 i32.le_s - i32.const 0 local.get $1 - local.get $4 + local.get $3 i32.le_s - select + i32.and if (result i32) loop $for-loop|0 local.get $1 - local.get $4 + local.get $3 i32.lt_s if local.get $1 @@ -2662,27 +2615,26 @@ br $for-loop|0 end end - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 i32.add i32.const 3145774 i32.store - local.get $4 + local.get $3 i32.const 2 i32.add else - local.get $4 + local.get $3 i32.const 21 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const 0 i32.gt_s - select + i32.and if (result i32) - local.get $4 + local.get $3 i32.const 1 i32.shl local.get $0 @@ -2704,19 +2656,18 @@ i32.const 1 i32.add else - local.get $4 + local.get $3 i32.const 0 i32.le_s - i32.const 0 - local.get $4 + local.get $3 i32.const -6 i32.gt_s - select + i32.and if (result i32) i32.const 2 - local.get $4 + local.get $3 i32.sub - local.tee $5 + local.tee $3 i32.const 1 i32.shl local.get $0 @@ -2733,7 +2684,7 @@ local.set $2 loop $for-loop|1 local.get $2 - local.get $5 + local.get $3 i32.lt_s if local.get $2 @@ -2751,7 +2702,7 @@ end end local.get $1 - local.get $5 + local.get $3 i32.add else local.get $1 @@ -2762,24 +2713,23 @@ i32.const 101 i32.store16 offset=2 local.get $0 - local.tee $3 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 i32.lt_s local.tee $2 if i32.const 0 - local.get $0 + local.get $1 i32.sub - local.set $0 + local.set $1 end - local.get $0 - local.tee $1 + local.get $1 + local.get $1 i32.const 100000 i32.lt_u if (result i32) @@ -2825,20 +2775,17 @@ i32.add end end - local.set $1 - local.get $0 - local.get $1 i32.const 1 i32.add - local.tee $0 + local.tee $1 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $0 i32.const 45 i32.const 43 local.get $2 select i32.store16 offset=4 - local.get $0 + local.get $1 i32.const 2 i32.add else @@ -2861,20 +2808,19 @@ local.get $0 local.get $2 i32.add - local.tee $0 + local.tee $2 i32.const 101 i32.store16 offset=2 - local.get $0 - local.tee $3 + local.get $2 i32.const 4 i32.add - local.get $4 + local.get $3 i32.const 1 i32.sub local.tee $0 i32.const 0 i32.lt_s - local.tee $5 + local.tee $3 if i32.const 0 local.get $0 @@ -2882,63 +2828,60 @@ local.set $0 end local.get $0 - local.tee $2 + local.get $0 i32.const 100000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 100 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $2 + local.get $0 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $2 + local.get $0 i32.const 1000 i32.ge_u i32.add end else - local.get $2 + local.get $0 i32.const 10000000 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $2 + local.get $0 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $2 + local.get $0 i32.const 100000000 i32.ge_u i32.add end end - local.set $2 - local.get $0 - local.get $2 i32.const 1 i32.add local.tee $0 call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.get $2 i32.const 45 i32.const 43 - local.get $5 + local.get $3 select i32.store16 offset=4 local.get $0 @@ -2957,18 +2900,20 @@ (local $4 i64) (local $5 i64) (local $6 i64) - (local $7 i32) + (local $7 i64) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) (local $11 i64) (local $12 i64) (local $13 i64) (local $14 i64) + (local $15 i64) + (local $16 i64) local.get $1 f64.const 0 f64.lt - local.tee $8 + local.tee $3 if (result f64) local.get $0 i32.const 45 @@ -2985,40 +2930,38 @@ i64.const 52 i64.shr_u i32.wrap_i64 - local.set $3 + local.tee $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.tee $9 + i32.const 1 + i32.sub local.get $2 i64.const 4503599627370495 i64.and - local.get $3 + local.get $8 i32.const 0 i32.ne i64.extend_i32_u i64.const 52 i64.shl i64.add - local.set $2 - local.get $3 - i32.const 1 - local.get $3 - select - i32.const 1075 - i32.sub - local.tee $3 - i32.const 1 - i32.sub - local.get $2 + local.tee $2 i64.const 1 i64.shl i64.const 1 i64.add - local.tee $5 + local.tee $4 i64.clz i32.wrap_i64 - local.tee $7 + local.tee $8 i32.sub - local.set $9 - local.get $5 - local.get $7 + local.set $10 + local.get $4 + local.get $8 i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_plus @@ -3028,25 +2971,25 @@ i64.eq i32.const 1 i32.add - local.tee $7 + local.tee $8 i64.extend_i32_s i64.shl i64.const 1 i64.sub - local.get $3 - local.get $7 - i32.sub local.get $9 + local.get $8 + i32.sub + local.get $10 i32.sub i64.extend_i32_s i64.shl global.set $~lib/util/number/_frc_minus - local.get $9 + local.get $10 global.set $~lib/util/number/_exp i32.const 348 i32.const -61 global.get $~lib/util/number/_exp - local.tee $9 + local.tee $8 i32.sub f64.convert_i32_s f64.const 0.30102999566398114 @@ -3055,9 +2998,9 @@ f64.add local.tee $1 i32.trunc_f64_s - local.tee $3 + local.tee $9 local.get $1 - local.get $3 + local.get $9 f64.convert_i32_s f64.ne i32.add @@ -3065,18 +3008,18 @@ i32.shr_s i32.const 1 i32.add - local.tee $3 + local.tee $9 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.sub global.set $~lib/util/number/_K - local.get $7 + local.get $10 i32.const 1328 i32.add i64.load global.set $~lib/util/number/_frc_pow - local.get $3 + local.get $9 i32.const 1 i32.shl i32.const 2024 @@ -3094,55 +3037,78 @@ local.get $2 i64.const 32 i64.shr_u - local.tee $14 - global.get $~lib/util/number/_frc_pow local.tee $5 + global.get $~lib/util/number/_frc_pow + local.tee $7 i64.const 4294967295 i64.and + local.tee $12 local.tee $2 - local.tee $4 i64.mul - local.get $4 + local.get $2 local.get $11 i64.mul i64.const 32 i64.shr_u i64.add - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u - local.tee $5 local.set $13 global.get $~lib/util/number/_frc_plus local.tee $4 i64.const 4294967295 i64.and - local.set $6 + local.set $2 local.get $4 i64.const 32 i64.shr_u - local.tee $10 - local.get $2 + local.tee $6 + local.get $12 i64.mul local.get $2 - local.get $6 + local.get $12 i64.mul i64.const 32 i64.shr_u i64.add + local.set $14 + global.get $~lib/util/number/_frc_minus + local.tee $15 + i64.const 4294967295 + i64.and local.set $4 - local.get $5 - local.get $10 + local.get $15 + i64.const 32 + i64.shr_u + local.tee $15 + local.get $12 i64.mul local.get $4 + local.get $12 + i64.mul i64.const 32 i64.shr_u i64.add + local.set $12 + local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 local.get $5 - local.get $6 + local.get $7 + i64.const 32 + i64.shr_u + local.tee $16 + local.tee $7 i64.mul - local.get $4 + local.get $13 + i64.const 32 + i64.shr_u + i64.add + local.get $7 + local.get $11 + i64.mul + local.get $13 i64.const 4294967295 i64.and i64.add @@ -3151,44 +3117,17 @@ i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.set $4 - global.get $~lib/util/number/_frc_minus - local.tee $6 - i64.const 4294967295 - i64.and - local.set $10 local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - local.get $2 + local.get $16 i64.mul - local.get $2 - local.get $10 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $2 - local.get $8 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $0 - local.get $13 local.get $14 - i64.mul - local.get $12 i64.const 32 i64.shr_u i64.add - local.get $11 - local.get $13 + local.get $2 + local.get $16 i64.mul - local.get $12 + local.get $14 i64.const 4294967295 i64.and i64.add @@ -3197,24 +3136,26 @@ i64.const 32 i64.shr_u i64.add - local.get $4 + i64.const 1 + i64.sub + local.tee $2 global.get $~lib/util/number/_exp_pow - local.get $9 + local.get $8 i32.add i32.const -64 i32.sub - local.get $4 - local.get $5 - local.get $6 - i64.mul local.get $2 + local.get $15 + local.get $16 + i64.mul + local.get $12 i64.const 32 i64.shr_u i64.add - local.get $5 - local.get $10 + local.get $4 + local.get $16 i64.mul - local.get $2 + local.get $12 i64.const 4294967295 i64.and i64.add @@ -3226,13 +3167,13 @@ i64.const 1 i64.add i64.sub - local.get $8 + local.get $3 call $~lib/util/number/genDigits - local.get $8 + local.get $3 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.get $8 + local.get $3 i32.add ) (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) @@ -3341,18 +3282,17 @@ i32.const 2 i32.add else + local.get $9 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq local.get $8 local.get $6 i32.const 2 i32.add i32.gt_u - i32.const 0 - local.get $9 - i32.const 64512 i32.and - i32.const 55296 - i32.eq - select if local.get $6 i32.load16_u offset=2 @@ -3385,6 +3325,13 @@ br $while-continue|0 end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.tee $8 local.get $7 i32.const 56 local.get $7 @@ -3393,15 +3340,7 @@ select i32.const 13 i32.add - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.tee $9 - local.get $7 + local.tee $6 i32.const 1073741820 i32.gt_u if @@ -3412,54 +3351,50 @@ call $~lib/wasi/index/abort unreachable end - local.get $7 + i32.const 12 + local.get $6 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $6 i32.const 12 i32.le_u - if (result i32) - i32.const 12 - else - local.get $7 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $7 + select + local.tee $9 call $~lib/rt/tlsf/searchBlock local.tee $6 i32.eqz if memory.size - local.tee $8 - local.get $7 - i32.const 536870910 - i32.lt_u - if (result i32) - i32.const 1 - i32.const 27 - local.get $7 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - local.get $7 - i32.add - else - local.get $7 - end + local.tee $6 i32.const 4 - local.get $9 - i32.load offset=1568 local.get $8 + i32.load offset=1568 + local.get $6 i32.const 16 i32.shl i32.const 4 i32.sub i32.ne i32.shl + i32.const 1 + i32.const 27 + local.get $9 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + local.get $9 + i32.add + local.get $9 + local.get $9 + i32.const 536870910 + i32.lt_u + select i32.add i32.const 65535 i32.add @@ -3467,16 +3402,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $6 + local.tee $7 local.get $6 - local.get $8 - i32.lt_s + local.get $7 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $6 + local.get $7 memory.grow i32.const 0 i32.lt_s @@ -3484,16 +3419,16 @@ unreachable end end - local.get $9 local.get $8 + local.get $6 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory + local.get $8 local.get $9 - local.get $7 call $~lib/rt/tlsf/searchBlock local.tee $6 i32.eqz @@ -3510,7 +3445,7 @@ i32.load i32.const -4 i32.and - local.get $7 + local.get $9 i32.lt_u if i32.const 0 @@ -3520,16 +3455,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $9 + local.get $8 local.get $6 call $~lib/rt/tlsf/removeBlock - local.get $7 - local.set $8 local.get $6 - local.tee $7 i32.load - local.set $6 - local.get $8 + local.set $10 + local.get $9 i32.const 4 i32.add i32.const 15 @@ -3542,81 +3474,81 @@ call $~lib/wasi/index/abort unreachable end - local.get $6 + local.get $10 i32.const -4 i32.and - local.get $8 + local.get $9 i32.sub - local.tee $10 + local.tee $7 i32.const 16 i32.ge_u if - local.get $7 local.get $6 + local.get $10 i32.const 2 i32.and - local.get $8 + local.get $9 i32.or i32.store - local.get $8 - local.get $7 + local.get $9 + local.get $6 i32.const 4 i32.add i32.add - local.tee $6 - local.get $10 + local.tee $9 + local.get $7 i32.const 4 i32.sub i32.const 1 i32.or i32.store + local.get $8 local.get $9 - local.get $6 call $~lib/rt/tlsf/insertBlock else - local.get $7 local.get $6 + local.get $10 i32.const -2 i32.and i32.store - local.get $7 + local.get $6 i32.const 4 i32.add - local.get $7 + local.get $6 i32.load i32.const -4 i32.and i32.add - local.tee $6 - local.get $6 + local.tee $7 + local.get $7 i32.load i32.const -3 i32.and i32.store end - local.get $7 + local.get $6 i32.const 4 i32.add - local.tee $7 + local.tee $6 i32.const 8 i32.add - local.tee $8 + local.tee $7 i32.const 4 i32.add - local.set $6 - local.get $7 + local.set $8 local.get $6 + local.get $8 i32.store - local.get $6 + local.get $8 i64.const 9071406388179572 i64.store - local.get $7 + local.get $6 i32.const 7 i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop i32.const 1052 @@ -3626,164 +3558,164 @@ local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 + local.get $6 i32.const 1056 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 if (result i32) - local.get $6 + local.get $8 i32.const 32 i32.store8 - local.get $6 + local.get $8 i32.const 1 i32.add - local.tee $6 + local.tee $8 local.get $1 call $~lib/util/number/dtoa_buffered local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 1 i32.gt_s if - local.get $6 + local.get $8 local.get $2 call $~lib/util/number/dtoa_buffered local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 2 i32.gt_s if - local.get $6 + local.get $8 local.get $3 call $~lib/util/number/dtoa_buffered local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 3 i32.gt_s if - local.get $6 + local.get $8 local.get $4 call $~lib/util/number/dtoa_buffered local.set $9 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $9 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 4 i32.gt_s if - local.get $6 + local.get $8 local.get $5 call $~lib/util/number/dtoa_buffered local.set $0 i32.const 3 global.set $~argumentsLength - local.get $7 local.get $6 + local.get $8 local.get $0 - local.get $6 + local.get $8 call $~lib/string/String.UTF8.encodeUnsafe@varargs i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop end end end end - local.get $6 + local.get $8 i32.const 1 i32.sub else - local.get $6 + local.get $8 end i32.const 10 i32.store8 - local.get $7 + local.get $6 i32.const 1 i32.store offset=4 i32.const 2 - local.get $7 + local.get $6 i32.const 1 - local.get $8 + local.get $7 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop - local.get $7 + local.get $6 i32.const 19024 i32.ge_u if @@ -3793,20 +3725,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $7 + local.get $6 i32.const 4 i32.sub - local.set $0 - local.get $7 + local.set $7 + local.get $6 i32.const 15 i32.and i32.const 1 - local.get $7 + local.get $6 select if (result i32) i32.const 1 else - local.get $0 + local.get $7 i32.load i32.const 1 i32.and @@ -3819,13 +3751,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $0 - local.get $0 + local.get $7 + local.get $7 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $7 call $~lib/rt/tlsf/insertBlock end ) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index 3105313e7f..00bc803084 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -39,9 +39,9 @@ (local $0 i32) (local $1 i32) i32.const 1296 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit i32.const 1104 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 i32.load offset=4 @@ -80,160 +80,6 @@ end end ) - (func $~lib/rt/itcms/__visit (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - global.get $~lib/rt/itcms/white - local.get $0 - i32.const 20 - i32.sub - local.tee $0 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - global.get $~lib/rt/itcms/iter - local.get $0 - i32.eq - if - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 147 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.set $~lib/rt/itcms/iter - end - block $__inlined_func$~lib/rt/itcms/Object#unlink - local.get $0 - i32.load offset=4 - i32.const -4 - i32.and - local.tee $2 - i32.eqz - if - i32.const 0 - local.get $0 - i32.const 17908 - i32.lt_u - local.get $0 - i32.load offset=8 - select - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 127 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - br $__inlined_func$~lib/rt/itcms/Object#unlink - end - local.get $0 - i32.load offset=8 - local.tee $1 - i32.eqz - if - i32.const 0 - i32.const 1168 - i32.const 131 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $2 - i32.or - i32.store offset=4 - end - global.get $~lib/rt/itcms/toSpace - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_u - if (result i32) - i32.const 1 - else - i32.const 1488 - i32.load - local.get $1 - i32.lt_u - if - i32.const 1296 - i32.const 1360 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - i32.const 1492 - i32.add - i32.load - i32.const 32 - i32.and - end - if (result i32) - global.get $~lib/rt/itcms/white - i32.eqz - else - i32.const 2 - end - local.set $3 - local.get $2 - i32.load offset=8 - local.set $1 - local.get $0 - local.get $2 - local.get $3 - i32.or - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - local.get $0 - i32.or - i32.store offset=4 - local.get $2 - local.get $0 - i32.store offset=8 - global.get $~lib/rt/itcms/visitCount - i32.const 1 - i32.add - global.set $~lib/rt/itcms/visitCount - end - ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -270,11 +116,10 @@ local.get $2 i32.const 256 i32.lt_u - if + if (result i32) local.get $2 i32.const 4 i32.shr_u - local.set $2 else i32.const 31 local.get $2 @@ -286,28 +131,25 @@ local.tee $2 i32.clz i32.sub + local.tee $4 + i32.const 7 + i32.sub local.set $3 local.get $2 - local.get $3 + local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor - local.set $2 - local.get $3 - i32.const 7 - i32.sub - local.set $3 end - local.get $2 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $3 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -319,19 +161,19 @@ end local.get $1 i32.load offset=8 - local.set $4 + local.set $5 local.get $1 i32.load offset=4 - local.tee $5 + local.tee $4 if - local.get $5 local.get $4 + local.get $5 i32.store offset=8 end - local.get $4 + local.get $5 if - local.get $4 local.get $5 + local.get $4 i32.store offset=4 end local.get $2 @@ -356,9 +198,9 @@ i32.shl local.get $0 i32.add - local.get $4 + local.get $5 i32.store offset=96 - local.get $4 + local.get $5 i32.eqz if local.get $3 @@ -366,17 +208,17 @@ i32.shl local.get $0 i32.add - local.tee $4 + local.tee $1 i32.load offset=4 i32.const -2 local.get $2 i32.rotl i32.and - local.set $1 - local.get $4 + local.set $2 local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.eqz if local.get $0 @@ -504,7 +346,7 @@ local.get $3 i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.const 12 i32.lt_u if @@ -515,7 +357,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $1 i32.const 4 i32.add @@ -535,44 +377,43 @@ i32.sub local.get $1 i32.store - local.get $3 + local.get $2 i32.const 256 i32.lt_u if (result i32) - local.get $3 + local.get $2 i32.const 4 i32.shr_u else i32.const 31 - local.get $3 + local.get $2 i32.const 1073741820 - local.get $3 + local.get $2 i32.const 1073741820 i32.lt_u select - local.tee $3 + local.tee $2 i32.clz i32.sub - local.tee $4 + local.tee $3 i32.const 7 i32.sub local.set $5 + local.get $2 local.get $3 - local.get $4 i32.const 4 i32.sub i32.shr_u i32.const 16 i32.xor end - local.tee $3 + local.tee $2 i32.const 16 i32.lt_u - i32.const 0 local.get $5 i32.const 23 i32.lt_u - select + i32.and i32.eqz if i32.const 0 @@ -582,7 +423,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -592,20 +433,20 @@ local.get $0 i32.add i32.load offset=96 - local.set $4 + local.set $3 local.get $1 i32.const 0 i32.store offset=4 local.get $1 - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 if - local.get $4 + local.get $3 local.get $1 i32.store offset=4 end - local.get $3 + local.get $2 local.get $5 i32.const 4 i32.shl @@ -633,7 +474,7 @@ local.get $0 i32.load offset=4 i32.const 1 - local.get $3 + local.get $2 i32.shl i32.or i32.store offset=4 @@ -660,15 +501,12 @@ i32.const 4 i32.sub local.set $1 - local.get $2 - i32.const -16 - i32.and local.get $0 i32.load offset=1568 - local.tee $2 + local.tee $4 if local.get $1 - local.get $2 + local.get $4 i32.const 4 i32.add i32.lt_u @@ -680,15 +518,15 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 i32.const 16 i32.sub i32.eq if - local.get $2 + local.get $4 i32.load - local.set $4 + local.set $3 local.get $1 i32.const 16 i32.sub @@ -709,6 +547,9 @@ unreachable end end + local.get $2 + i32.const -16 + i32.and local.get $1 i32.sub local.tee $2 @@ -718,7 +559,7 @@ return end local.get $1 - local.get $4 + local.get $3 i32.const 2 i32.and local.get $2 @@ -755,8 +596,8 @@ (local $1 i32) memory.size local.tee $0 - i32.const 1 - i32.lt_s + i32.const 0 + i32.le_s if (result i32) i32.const 1 local.get $0 @@ -915,7 +756,11 @@ if local.get $0 i32.load - call $~lib/rt/itcms/__visit + local.tee $2 + if + local.get $2 + call $byn-split-outlined-A$~lib/rt/itcms/__visit + end local.get $0 i32.const 4 i32.add @@ -1040,7 +885,7 @@ local.get $0 i32.const 4 i32.sub - local.set $1 + local.set $2 local.get $0 i32.const 15 i32.and @@ -1050,7 +895,7 @@ if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.load i32.const 1 i32.and @@ -1063,14 +908,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 - local.get $0 + local.get $2 + local.get $2 i32.load i32.const 1 i32.or i32.store - local.get $0 + local.get $2 call $~lib/rt/tlsf/insertBlock end end @@ -1100,9 +944,9 @@ i32.load offset=4 i32.const -2 i32.and - local.tee $2 + local.tee $1 if (result i32) - local.get $2 + local.get $1 i32.ctz i32.const 2 i32.shl @@ -1118,13 +962,13 @@ if (result i32) local.get $1 i32.ctz - local.tee $1 + local.tee $2 i32.const 2 i32.shl local.get $0 i32.add i32.load offset=4 - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1134,9 +978,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.ctz local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1154,348 +998,348 @@ (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 10 - local.set $0 - loop $while-continue|0 + block $folding-inner0 + i32.const 10 + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end local.get $0 if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable end - end - local.get $0 - if - i32.const 0 - i32.const 1056 + local.get $2 i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 10 - i32.ne - if + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 10 - local.set $0 - loop $while-continue|00 + local.set $2 + i32.const 10 + local.set $0 + loop $while-continue|00 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + loop $while-continue|1 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|1 + end + end + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 29 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 30 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + br $while-continue|00 + end + end local.get $0 if + i32.const 0 + i32.const 1056 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 34 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $2 + i32.const 1 + local.set $0 + loop $while-continue|01 local.get $0 + local.tee $1 i32.const 1 i32.sub local.set $0 local.get $1 - i32.const 1 - i32.add - local.set $1 - loop $while-continue|1 - local.get $0 - if - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|1 - end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 29 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if + if (result i32) + local.get $2 + i32.const 1 + i32.add + local.tee $2 + else i32.const 0 - i32.const 1056 - i32.const 30 - i32.const 5 - call $~lib/builtins/abort - unreachable end - br $while-continue|00 + br_if $while-continue|01 end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 34 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - i32.const 1 - local.set $0 - loop $while-continue|01 local.get $0 - local.tee $1 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 i32.const 1 - i32.sub + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 local.set $0 - local.get $1 - if (result i32) - local.get $2 + loop $while-continue|02 + local.get $0 i32.const 1 i32.add - local.tee $2 - else - i32.const 0 + local.tee $0 + i32.const 10 + i32.ne + br_if $while-continue|02 end - br_if $while-continue|01 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $while-continue|02 local.get $0 - i32.const 1 - i32.add - local.tee $0 i32.const 10 i32.ne - br_if $while-continue|02 - end - local.get $0 - i32.const 10 - i32.ne - if + if + i32.const 0 + i32.const 1056 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 - i32.const 1056 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - loop $while-continue|03 - local.get $0 - i32.const 1 - i32.add - local.tee $0 + local.set $0 + loop $while-continue|03 (result i32) + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $while-continue|03 + local.get $0 + end i32.const 10 i32.ne - br_if $while-continue|03 - end - local.get $0 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 72 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - loop $while-continue|04 - local.get $0 if - local.get $0 + i32.const 0 + i32.const 1056 + i32.const 72 i32.const 1 - i32.sub - local.set $0 - br $while-continue|04 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + loop $while-continue|04 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|04 + end end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 10 - local.set $0 - i32.const 10 - local.set $2 - loop $while-continue|05 local.get $0 if - loop $while-continue|16 - local.get $2 - if + i32.const 0 + i32.const 1056 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + local.set $0 + i32.const 10 + local.set $2 + loop $while-continue|05 + local.get $0 + if + loop $while-continue|16 local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|16 + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|16 + end end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|05 end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|05 end - end - local.get $0 - if - i32.const 0 - i32.const 1056 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - if + local.get $0 + if + i32.const 0 + i32.const 1056 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + if + i32.const 0 + i32.const 1056 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + i32.const 17908 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace i32.const 0 - i32.const 1056 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - memory.size - i32.const 16 - i32.shl - i32.const 17908 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 + local.set $1 + 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 1524 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $while/Ref#constructor - local.tee $0 + local.tee $2 i32.store - loop $while-continue|07 - local.get $0 + loop $while-continue|06 + local.get $2 if - local.get $2 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if i32.const 0 - local.set $0 + local.set $2 else global.get $~lib/memory/__stack_pointer call $while/Ref#constructor - local.tee $0 + local.tee $2 i32.store end - br $while-continue|07 + br $while-continue|06 end end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1506,7 +1350,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 if i32.const 0 i32.const 1056 @@ -1520,7 +1364,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1530,33 +1374,33 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 call $while/Ref#constructor - local.tee $0 + local.tee $2 i32.store - loop $while-continue|06 + loop $while-continue|08 call $while/Ref#constructor if - block $while-break|07 - local.get $2 + block $while-break|09 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if i32.const 0 - local.set $0 - br $while-break|07 + local.set $2 + br $while-break|09 end - br $while-continue|06 + br $while-continue|08 end end end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1567,7 +1411,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 if i32.const 0 i32.const 1056 @@ -1582,25 +1426,25 @@ global.set $~lib/memory/__stack_pointer i32.const 0 local.set $0 - loop $while-continue|08 + loop $while-continue|07 local.get $0 i32.const 1 i32.add local.tee $0 - i32.const 1 - i32.lt_s - br_if $while-continue|08 + i32.const 0 + i32.le_s + br_if $while-continue|07 end i32.const 0 local.set $0 - loop $while-continue|010 + loop $while-continue|09 local.get $0 i32.const 1 i32.add local.tee $0 - i32.const 1 - i32.lt_s - br_if $while-continue|010 + i32.const 0 + i32.le_s + br_if $while-continue|09 end i32.const 0 local.set $0 @@ -1628,23 +1472,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|012 + loop $while-continue|011 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|012 + br $while-continue|011 end end end call $~lib/rt/itcms/step drop - loop $while-continue|113 + loop $while-continue|112 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|113 + br $while-continue|112 end end global.get $~lib/rt/itcms/total @@ -1687,7 +1531,7 @@ local.tee $0 if local.get $0 - call $~lib/rt/itcms/__visit + call $byn-split-outlined-A$~lib/rt/itcms/__visit end return end @@ -1720,7 +1564,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $1 i32.const 0 i32.store global.get $~lib/rt/itcms/total @@ -1774,17 +1618,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.tee $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz if memory.size - local.tee $1 + local.tee $0 i32.const 4 - local.get $2 + local.get $3 i32.load offset=1568 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 4 @@ -1797,16 +1641,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $0 + local.tee $2 local.get $0 - local.get $1 - i32.lt_s + local.get $2 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $0 + local.get $2 memory.grow i32.const 0 i32.lt_s @@ -1814,15 +1658,15 @@ unreachable end end - local.get $2 - local.get $1 + local.get $3 + local.get $0 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $2 + local.get $3 call $~lib/rt/tlsf/searchBlock local.tee $0 i32.eqz @@ -1849,22 +1693,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 call $~lib/rt/tlsf/removeBlock local.get $0 i32.load - local.tee $1 + local.tee $4 i32.const -4 i32.and i32.const 28 i32.sub - local.tee $3 + local.tee $2 i32.const 16 i32.ge_u if local.get $0 - local.get $1 + local.get $4 i32.const 2 i32.and i32.const 28 @@ -1873,19 +1717,19 @@ local.get $0 i32.const 32 i32.add - local.tee $1 - local.get $3 + local.tee $4 + local.get $2 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $2 - local.get $1 + local.get $3 + local.get $4 call $~lib/rt/tlsf/insertBlock else local.get $0 - local.get $1 + local.get $4 i32.const -2 i32.and i32.store @@ -1897,8 +1741,8 @@ i32.const -4 i32.and i32.add - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.load i32.const -3 i32.and @@ -1911,12 +1755,12 @@ i32.const 0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace - local.tee $1 + local.tee $2 i32.load offset=8 local.set $3 local.get $0 + local.get $2 global.get $~lib/rt/itcms/white - local.get $1 i32.or i32.store offset=4 local.get $0 @@ -1930,7 +1774,7 @@ local.get $0 i32.or i32.store offset=4 - local.get $1 + local.get $2 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/total @@ -1942,16 +1786,165 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $4 + local.get $1 local.get $0 i32.const 20 i32.add - local.tee $4 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $0 + ) + (func $byn-split-outlined-A$~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + global.get $~lib/rt/itcms/iter + local.get $1 + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + i32.const 0 + local.get $1 + i32.const 17908 + i32.lt_u + local.get $1 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + local.get $0 + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + i32.const 1488 + i32.load + local.get $0 + i32.lt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + local.get $3 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) )